1、监听EF执行sql的方式
- db.Database.Log += c => Console.WriteLine($"sql:{c}");
- SQL Server Profiler
public JDDbContext() : base("name=JDDbContext") { this.Database.Log += c => Console.WriteLine($"sql:{c}"); }
2、查看EF对象上下文监听对象的状态
- db.Entry<User>(userNew).State
- db.Users.Where(u => u.Id == 21).AsNoTracking().FirstOrDefault(); //AsNoTracking() 函数用于设置当前操作不跟踪对象的状态,加一个可以提升性能
- db.Entry<User>(user).State = EntityState.Modified; //手动设置对象的状态
-
Find函数可以使用缓存,优先从内存查找(限于db),但是linq时不能用缓存,每次都是要查询的
- db.Entry<User>(user5).Property("Name").IsModified = true;//指定某字段被改过
- db.Entry<User>(user).State = EntityState.Modified; //指定某个实体被修改过