Entity Framework 6 手动更新一条记录

Entity Framework 6 Updating a record manually

我将 EF 6 与 WPF 一起使用。由于我必须处理大量数据集,因此我必须对查询使用 AsNoTracking()。因此,更新任何条目现在是 ViewModel 的责任。我正在使用 repository pattern,我正在考虑在 generic repository 中实现一个方法,如下所示:

virtual public void Update(T updatedentity)
{
    _ctx.Set<T>().Attach(updatedentity);
    _ctx.Entry(updatedentity).State = EntityState.Modified;
}

这是个好主意吗?这种方法的优点和缺点是什么?最后,性能会受到重大影响吗?这里需要注意一点,我的大多数实体最多有 15-20 个属性。

是的,您 can/should 附加数据库中已存在的实体,然后将其状态设置为已修改将强制更新所有 T 实体属性。

您可以在此处阅读有关 Attach 方法的详细说明:Entity Framework 4 - AddObject vs Attach 另请在此处阅读 EntityState.Modified 可能产生的影响 @Gert 回答:Entity Framework - Why explicitly set entity state to modified?