实体框架变更跟踪(只读)查询

本文关键字:只读 查询 跟踪 框架 实体 | 更新日期: 2023-09-27 18:08:04

只是想征求大家对一个场景的意见:

这样做会更有效率吗?

  1. 选择更改跟踪关闭的记录,然后如果需要更新,则将对象重新附加到更新的上下文中?
    • 或/ul>
    • 选择一个开启了变更跟踪的记录,以防记录需要更新?

或者这是微不足道的?

我的场景是,我们有一个运行状况检查例程,它每10秒对表进行一次选择,并且很少需要更新(仅在部署了新版本时更新记录)。那么我们是否应该在更改跟踪关闭的情况下进行健康检查?

实体框架变更跟踪(只读)查询

根据您的用例,我认为No-tracking查询将为您的应用程序提供big performance boost

可以使用AsNoTracking()

using (var context = new HelthContext())
{
    var patients = context.Patients.AsNoTracking().ToList();
}

如果你有一个entity,你知道数据库中的already exists,但contextnot currently being tracked,那么你可以告诉contextDbSet上使用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