查看EF执行记录
context.Database.log+=l=>Console.WriteLine($"日志{l}");//任何时候创建context实例都会输出日志
dbContext//每一个生成的dbContext对应的都是一个数据库链接
查询起作用的时候,前提没有关闭延迟查询
1.ToList(); 2.Count(); 3.Foreach //查询到的数据
EF的跟踪
dbContext.SysUser<user>.Entry.Status=Detached//可以更改当前user的跟踪状态 dbContext.SysUser.Find(1).AsNoTracking();单纯查询的时候可以 抛弃EF的跟踪会提升性能。
EF 事务两种方式
1.var tran = BE.Database.BeginTransaction() tran.commit();//事务提交 tran.Rollback();//事务回滚 2.dbContext.SaveChange(); //会生成SQL语句 并开启事务
延迟查询
优点:可以叠加多次查询,一次提交给数据库,可以按需获取数据。
缺点:只有用完了才能关闭链接。只有在context 的作用才有效。
延迟查询数据的时候没有tolist之前 对象存储的是 表达式目录树+结果类型+解析工具+上下文 ,当真正需要的时候才会解析Sql执行Sql拿到数据