12.EF

一般来说,主外键表,主表有一个子表的集合,导航属性

子表里面还有个主表的实例,引用属性

1.默认情况下,导航属性是延迟查询;条件是virtual属性+默认配置

2、关闭延迟查询,子表数据就没了

dbContext.Configuration.LazyLoadingEnabled=false;//关闭延迟查询

3.预先加载 Include 查询主表时就把子表数据一次性查出来

var companyList=dbContext.Set<Company>().include("User").Where(x=>x.Id>20);

4.关闭延迟查询后,如果需要子表数据,可以显示加载

dbContext.Entry<Company>(company).Collection(x=>x.User).Load();

非主外键关系也可以用导航属性

数据插入:A表--B表(包含A的ID)--ID是自增的

一次savechange,如果是主外键关系,可以自动使用自增ID;如果不是,就用不到

事务:1.SaveChange

      2.TransactionScope完成一个context的多次SaveChange

    3.TransactionScope完成不同context实例的事务

context就相当于一个数据库连接,和数据库交互的上下文

1.一次请求一个context

2.不能一个进程就一个context实例

3.多线程最好多个实例

4.用完尽快释放

原文地址:https://www.cnblogs.com/bjhblogs/p/13451781.html