2013-04-08 129 views
0

我已将两个字段(A,B)添加到我的表中。我有这些字段填充 我做新的注册。但是,当我对包含这些字段的表单进行更新时,它似乎会清除字段(A,B)中的值。有没有办法在控制器或模型中设置验证,以防止更新,当我没有传递值更新?MVC更新删除数据

+0

这是误解ViewModel的另一个经典例子。在这里有两篇文章,[这一个](http://stackoverflow.com/questions/9326450/in-mvc-what-is-a-viewmodel)和[另一个](http://stackoverflow.com/questions/11064316/what-is-viewmodel-in-mvc),它有一个例子可以让你知道它的作用。基本上,如果你有一个实体你不希望所有的字段都更新,那么这是一个有视图模型的候选人。但我会建议每次使用viewmodel。 – 2013-04-09 00:10:45

回答

2

实体框架更新所有已更改的字段。如果您的字段有数据,EF会将空值视为更改。

您应该检索记录,只更新要更改的字段,然后重新保存。

+0

这是否意味着我需要在更新时在表单中包含该字段?有没有办法不包括在表单中的字段,仍然有EF不更新它? – user1929393 2013-04-08 23:24:49

+0

@ user1929393,最简单的方法是从数据库中提取对象,更新相应的字段,然后保存 – 2013-04-08 23:59:25

+0

@ user1929393 - 否,这意味着在从数据库检索记录后,更新所需的字段更改,然后保存更改。 – 2013-04-09 13:39:49