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 进行比较的列),第二个应该更快。在其他情况下 - 第一个可以。