实体框架变更跟踪(只读)查询
本文关键字:只读 查询 跟踪 框架 实体 | 更新日期: 2023-09-27 18:08:04
只是想征求大家对一个场景的意见:
这样做会更有效率吗?
- 选择更改跟踪关闭的记录,然后如果需要更新,则将对象重新附加到更新的上下文中?
- 或/ul>
- 选择一个开启了变更跟踪的记录,以防记录需要更新?
或者这是微不足道的?
我的场景是,我们有一个运行状况检查例程,它每10秒对表进行一次选择,并且很少需要更新(仅在部署了新版本时更新记录)。那么我们是否应该在更改跟踪关闭的情况下进行健康检查?
根据您的用例,我认为No-tracking
查询将为您的应用程序提供big performance boost
。
可以使用AsNoTracking()
using (var context = new HelthContext())
{
var patients = context.Patients.AsNoTracking().ToList();
}
如果你有一个entity
,你知道数据库中的already exists
,但context
是not currently being tracked
,那么你可以告诉context
在DbSet
上使用Attach
方法跟踪实体,如下所示。
var existingPatient = new Patient { Id = 1, Name = "Patient 1" };
using (var context = new HelthContext())
{
context.Patients.Attach(existingPatient );
// Do some more work...
context.SaveChanges();
}
Reference:Entity states and SaveChanges