【发布时间】:2014-03-04 00:55:55
【问题描述】:
这是场景。
示例模型:
public class Foo {
public int Id {get;set;}
public virtual Bar Bar {get;set;}
}
public class Bar {
public int Id {get;set;}
public string Name {get;set;}
}
在我看来,要创建 Foo 对象,它有一个已存在的 Bar 对象的 DropDownList。
此 DropDownList 的值与 Bar 的 Id 相关。
像这样的:
@Html.DropDownListFor(n => n.Bar.Id, new SelectList(ViewBag.Bars, "Id", "Name"))
提交表单时,MVC 将值正确绑定到 Foo 对象,并创建一个仅设置了 Id 的新 Bar 对象。
当我尝试保存对象时,EF 返回异常。它尝试创建一个 Bar 对象,但会失败,因为 Bar 对象只设置了 Id。
我认为 EF 足够聪明,可以在 Bar 中设置 Id 并获取它。
所以我的问题是:有没有办法通过导航属性设置关系而无需之前获取它?
我的模型的导航属性没有公开的外键,我正在寻找不需要它的解决方案。
【问题讨论】:
标签: c# asp.net-mvc entity-framework entity-framework-6 asp.net-mvc-5.1