实体框架更新 - 是否覆盖值

时间:2011-12-07 15:25:50

标签: entity-framework entity-framework-4.1

我正在使用Entity Framework 4.1对我的数据库执行CRUD操作。我已关闭以下属性:

this.Configuration.ProxyCreationEnabled = false;
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.AutoDetectChangesEnabled = false;

我更新用户对象的方法

    public void Edit(User user)
    {
        _context.Entry(user).State = System.Data.EntityState.Modified;
        _context.SaveChanges();
    }

我找回了:

User.Forename = Joe
User.Surname = Bloggs

我已经使用

将用户对象传递给了我的编辑方法
User.Forename = Joe
User.Surname = Bloggs

如果我将我的用户对象传递给我的Edit方法,但我没有更改任何属性,如上所述。是否会在具有相同值的数据库中写入属性,或者实体框架是否知道值未更改?

1 个答案:

答案 0 :(得分:2)

由于您明确将状态设置为Modified,因此即使没有任何属性值发生更改,EF也会向数据库发送更新语句。

如果您不希望EF使用相同的值更新数据库,则必须添加逻辑以跟踪自将AutoDetectChangesEnabled设置为false以来值是否已更改。< / p>