0

我有 mvc 视图,其中包含来自实体的一些列。当我执行 db.SaveChanges() 时,不属于视图的所有列都将使用 NULL 进行更新,因此会覆盖数据库记录中存在的任何值。这很蹩脚。我知道我可以为视图做 ModelView 并只绑定我想要的那些列。但我正在寻找一种方法来简单地告诉 EF,在此特定更新期间“忽略”列,不要更新 MvC 视图中不存在的列。我正在使用 EF 5。有什么建议吗?

4

2 回答 2

0

我想我需要的是这个

User u = db.Users.Find(user.UserID);
        if (u!=null) {

            TryUpdateModel(u);
if (ModelState.IsValid)
{
                db.SaveChanges();
}
于 2012-11-26T00:42:04.067 回答
0

我不知道你为什么要避免创建一个单独的模型,但我想你知道你在做什么,所以也许可以尝试这种方法来欺骗 EF 认为属性没有改变:

var entry = context.Entry(obj);
entry.Property(name).IsModified = false;

我自己没有尝试过,但在 EF 5 中应该可以。如果它不起作用,请尝试通过搜索entry.CurrentValues.PropertyNames集合来访问属性条目,然后IsModifiedfalse.

于 2012-11-25T22:34:45.200 回答