zoukankan      html  css  js  c++  java
  • EF(常用的ORM框架)

    上传和下载.net开源插件项目的网站 www.nuget.org

    ORM:实体对象关系型数据库映射,这一类的组件都叫做ORM

    对象——》数据库——》  对象的映射的过程

    ORM关系图:

     

    EF:是一种很常用的ORM框架

     

    Linq增删改

     

    增:

    删:

    改:

    查:

     

    深入EF

    Model1.edmx:其实本质就是一个XML文件

    XML:其中有三个重要部分

    1数据库中的实体节点

    2集合中的实体对象节点

    3映射关系节点

     

    后缀tt结尾其实就是一个文件模板

     

     

    2016-7-7ModelFirst

     

    ModelFrist
    代码先行,即先写模型代码,后生成数据库中的表
    相对于先设计数据库,在生成模型代码

     

    使用情况:
    当你的项目没有使用EF的时候,就可以这么来做,ModelFrist代码先行
    注意:
    要保持数据库就概念模型对象的一致,如果发生了不一致的情况,那么要从数据库中更新模型
    或者更具模型生成数据库,至少要更新一边,但是可能会丢失数据,所以最好不要更具模型来更新数据库

     

    延时加载
    使用Linq的时候, 返回IQueryble<T>或IEnumerable<T>都是延迟加载的,在没有用的时候是不会执行SQL语句,只有再用到数据的时候才会执行SQL语句。
    如果你想要先得到数据再来操作的话可以使用一个方法
    var list2 = list.ToList<T>();//这里的list时拼接linq命令后的得到的对象

    2016-7-7dbContext笔记

    DbContext中还有两大集合
    Entry
    Set

    增加,查询时,推荐使用属性的方式
    修改,删除使用Entry标记的方式来


    增加
    //先创建一个DbContext 这里创建的是context
    //创建一个新的对象类型这里以Student为例
    Student s1 = new Student(){sName = "jk", sAddress = "hb"};;
    context.Entry<Student>(s1).State = EntityState.Added;
    context.SaveChanges();
    //添加和不适用标记的方式没什么太大的区别,建议不使用标记的方式增加


    删除 (推荐使用)//只根据主键删除
    Student s1 = new Student(){sID = 8, sAddress = "hb"};
    context.Entry<Student>(s1).State = EntityState.Deleted;
    context.SaveChanges();


    改//除了主键列其他的都会被改变
    Student s1 = new Student(){sID = 8, sAddress = "已经被改变的值"};
    context.Entry<Student>(s1).State = EntityState.Modifed;
    context.SaveChanges();


    Set
    //以下两个东西可以画等号
    context.Student
    context.Set<Student>


    Linq Lambda分页 //这种要会,之前用的存储过程的和SQl语句的也要会,这种不会全部内容都查出来,你要什么就可以查什么 要查看里面的SQL语句可以在SQlserver中监视查看
    satic List<Student> GetPageList(Func<Student,bool> whereLambda,Func<Student,Object>orderlambda,int pageSize,int pageIndex)
    {
      创建一个DbContext 这里创建的是context
      var list = context.Student.Where(whereLambda).OrderByDescending(orderLambda).Skip((pageIndex-1)*pageSize).Take(pageSize).Select(s=>s);
      return lisr.ToList();
    }

    Skip()//跳过多少项
    Take()//要多少项

    //方法调用
    List<Student> list = GetPageList(s=>s.sID>5,s=>s.sID,2,2);


    方法升华扩展(泛型)
    satic List<T> GetPageList(Func<T,bool> whereLambda,Func<T,Object>orderlambda,int pageSize,int pageIndex) where T:calss
    {
      创建一个DbContext 这里创建的是context
      var list = context.Set<T>().Where(whereLambda).OrderByDescending(orderLambda).Skip((pageIndex-1)*pageSize).Take(pageSize).Select(s=>s);
      return lisr.ToList();
    }

     

     

  • 相关阅读:
    第五十四天:jQuery内容的基础:
    第五十三天dom基础
    第五十二天js的&#183;进阶
    第五十一天js的基础
    第四十九天css进阶
    第四十八天 html中的form和css基础
    第四十七天:web中德html初级:
    第42天IO模块
    第四十一天:协程操作
    第四十天线程的进阶
  • 原文地址:https://www.cnblogs.com/LijiafengBlog/p/5651455.html
Copyright © 2011-2022 走看看