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.数据层 每个具体的操作类 继承于 数据父类,拥有父类通用的增删改查方法。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。