这是场景。
示例模型:
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 并获取它。
所以我的问题是:有没有办法通过导航属性设置关系而不必先获取它?
我的模型的导航属性没有暴露的外键,我正在寻找不需要它的解决方案。