我正在使用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方法,但我没有更改任何属性,如上所述。是否会在具有相同值的数据库中写入属性,或者实体框架是否知道值未更改?
答案 0 :(得分:2)
由于您明确将状态设置为Modified
,因此即使没有任何属性值发生更改,EF也会向数据库发送更新语句。
如果您不希望EF使用相同的值更新数据库,则必须添加逻辑以跟踪自将AutoDetectChangesEnabled
设置为false
以来值是否已更改。< / p>