zoukankan      html  css  js  c++  java
  • MVC之实体框架(数据持久化框架)EntityFrameWork(EF)

    EF - EntityFrameWork

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

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

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

    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中并没有保存查询的数据,而是保存了要查询的数据条件的 表达式树

    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.创建一个表达式对象

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

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

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

    //3.执行委托

    fu("123");
    

    3.关于 形参设置默认值

    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.数据层 每个具体的操作类 继承于 数据父类,拥有父类通用的增删改查方法。

  • 相关阅读:
    监控系统
    RocketMQ入门介绍
    Linux的虚拟内存详解(MMU、页表结构) 转
    快速排序
    如何选择分布式事务解决方案? 转
    java 基本数据类型相关思考
    互联网项目中mysql应该选什么事务隔离级别 转
    线上服务的FGC问题排查,看这篇就够了! 转
    什么是Base64? 转
    业界难题-“跨库分页”的四种方案 转
  • 原文地址:https://www.cnblogs.com/aixincao/p/3634693.html
Copyright © 2011-2022 走看看