我有一个我正在尝试使用 MVC(2) 更新的对象,也使用 EntityFramework 框架。
我知道我没有提供太多代码,但我真的觉得没有必要。我有这样的逻辑的原因,我会解释:
- 我有一些级联下拉菜单,当其中一个下拉菜单为空时,我使用 jQuery 为其填充“未知”值,例如 id 为 -1。
- 因此,当我得到值 -1 时,我创建了另一个表中的 UNKNOWN 值。
- 然后我找到那个对象并将它分配给
Fruit
像这样的代码:
if (id == -1)
{
//The object was unknown so create it
var newUnknown = new Fruit
{
Name = "UNKNOWN";
};
EntityFramework.AddToFruits(newUnknown);
EntityFramework.SaveChanges();
defaultValueObject = EntityFramework.Fruits.Single(x=>x.FruitID == newUnknown.FruitID);
object.Fruit = defaultValueObject;
object.Date = DateTime.Now;
UpdateModel(object);
EntityFramework.SaveChanges();
运行 line后UpdateModel(object);
,我设置的值,例如,Fruit
恢复为从表单发送过来的值...(即 -1),然后EntityFramework.SaveChanges();
FK contrainst 失败(因为不存在 id 为 -1 的水果)!很公平——但这不是我分配给你的!
我不明白为什么它会恢复,因为在第一个AddToFruits()
未知数在数据库中之后......一直到UpdateModel(object);
它在object
......
如果它像我分配的那样添加它,则不会出现 FK 约束异常。但是 MVC 的 UpdateModel 决定做一些奇怪的事情并默认为(可能是表单提交时出现的)并将其搞砸了。
为什么会这样?我该如何解决?