EF Core 3.1 更新实体
EF Core 3.1 Update Entity
我想使用 EF Core 更新我的实体。这两种方法中哪一种更有效且更好用。
Context.Entry(entity).State = EntityState.Modified
Context.SaveChanges();
下一个是
var exist = entities.Find(entity.Id);
Context.Entry(exist).CurrentValues.SetValues(entity);
Context.SaveChanges();
两个主题都可以,但哪个更好?
这取决于你的情况。第一个,据我所知应该重写数据库中的整个实体。第二个可能会做出 extra request to the database if entity is not already tracked by context, but should update only fields which actually have changed。因此,如果您启用了更改跟踪并且已经将实体提取到您的上下文中,并且有很多列(或包含大量数据并且可以通过 EF 进行比较的列),第二个应该更快。在其他情况下 - 第一个可以。
我想使用 EF Core 更新我的实体。这两种方法中哪一种更有效且更好用。
Context.Entry(entity).State = EntityState.Modified
Context.SaveChanges();
下一个是
var exist = entities.Find(entity.Id);
Context.Entry(exist).CurrentValues.SetValues(entity);
Context.SaveChanges();
两个主题都可以,但哪个更好?
这取决于你的情况。第一个,据我所知应该重写数据库中的整个实体。第二个可能会做出 extra request to the database if entity is not already tracked by context, but should update only fields which actually have changed。因此,如果您启用了更改跟踪并且已经将实体提取到您的上下文中,并且有很多列(或包含大量数据并且可以通过 EF 进行比较的列),第二个应该更快。在其他情况下 - 第一个可以。