技术备忘录(Entity Framework 的数据更新)
时间:2010-10-01 来源:安羽.
问题起因:
我们使用Entity Framework更新数据的一般方式:
///代码1
TestEntities db = new TestEntities();
usr.UserName = "username";
usr.IsAnonymous = false;
usr.LastActivityDate = DateTime("1990-01-09");
usr.LoweredUserName = “username”
usr.MobileAlias = “mobileAilas”;
db.SaveChanges();
此代码段工作正常。
///代码2TestEntities db = new TestEntities();
///此处的PostPageModeluser为view页传过来的用户已修改过的Model
[HttpPost]
public ActionResult Edit(aspnet_Users PostPageModeluser)
{
var usr = db.aspnet_Users.First(u =>u.UserId==PostPageModeluser.UserId);
usr = PostPageModeluser;
db.SaveChanges();
}
此代码段虽无异常,可用户修改的数据并没提交的数据库中的去。
分析其成因是:实体更新数据库是根据EntityState值的状态,选择合适的方式更新数据库的,因为[usr = PostPageModeluser;]没有改变实体状态对象(EntityState)的值,可代码段1在每个属性(字段)被赋值时EntityState都会被赋以适当的值。注意EntityState对外是只读的。
使用下面这段代码就可以解决
...略
usr = PostPageModeluser;
db.ApplyPropertyChanges("aspnet_Users", usr);
db.SaveChanges();
相关阅读 更多 +