MVC之实体框架(数据持久化框架)EntityFrameWork(EF)

EF - EntityFrameWork

中文名:实体框架(数据持久化框架)

 

1.使用EF查询(Linq to EF)

1.1使用标准查询运算符来查询

1
2
3
OumindBlogEntities db = new OumindBlogEntities();
 
IQueryable<BlogArticle> list = db.BlogArticles.Where(a => a.ACate==2);

 

1.2使用Linq to EF

//1.EF默认使用延迟加载

//1.1 IQueryable<T> 支持延迟记载,linq编译成SQO,运行时会生成一颗 表达式树,也就是说,IQueryable中并没有保存查询的数据,而是保存了要查询的数据条件的 表达式树

1
IQueryable<BlogArticle> list = from a in db.BlogArticles where a.ACate == 2 select a;

 

//1.2那么当使用 IQueryable的时候(ToList,foreach遍历),才会通过 表达式树里的条件生成 sql 语句,并到数据库查询

list.ToList().ForEach(a => Console.WriteLine(a.AId + "," + a.ATitle));

 

2.关于 Expression

//1.创建一个表达式对象

1
Expression<Func<string, bool>> pre = (str => str.Length > 0);

 

//2.编译表达式树,生成 指定的 委托对象

1
Func<string,bool> fu = pre.Compile();

 

//3.执行委托

1
fu("123");

 

3.关于 形参设置默认值

1
public List<T> GetPagedList<TKey>(int pageIndex, int pageSize, out int rowCount, out int pageCount, Expression<Func<T, bool>> where, Expression<Func<T, TKey>> orderby, bool isAsc = true)

 

4.在程序集U中(比如UI层),如果使用 程序集B里的类b(比如BLL层):

 4.1如果在类b中,直接创建 程序集D(比如DAL层)里的类的对象,没有问题。

 4.2如果在定义类b的时候,使用到了程序集D的类(比如说继承,泛型参数),那么 程序集U 要求添加 程序集D的引用。

 

5.基于EF的新框架 简单三层                      

UI -> BLL - > IDAL -> DAL -> MODEL

1.表现层 直接使用 业务层对象

2.业务层 的每个具体的操作类,都继承于 业务父类,在业务父类中 定义了一个 数据层接口 IDAL、并且 业务父类 中还定义了一个 抽象方法;业务子类重写抽象方法,并实例化 父类里的 IDAL接口对象。

3.数据层 每个具体的操作类 继承于 数据父类,拥有父类通用的增删改查方法。

MVC之实体框架(数据持久化框架)EntityFrameWork(EF),布布扣,bubuko.com

MVC之实体框架(数据持久化框架)EntityFrameWork(EF)

上一篇:MVC5 + EF6 简单示例(转载)


下一篇:一个页面多个倒计时 js