1

这是场景。
示例模型:

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 并获取它。

所以我的问题是:有没有办法通过导航属性设置关系而不必先获取它?

我的模型的导航属性没有暴露的外键,我正在寻找不需要它的解决方案。

4

1 回答 1

0

您需要Foo.BarIDEF 的属性来确定如何持久化您的树。没有其他办法。

于 2014-03-04T01:10:20.090 回答