这是场景。
示例模型:
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的Ids一致 像这样:
@Html.DropDownListFor(n => n.Bar.Id, new SelectList(ViewBag.Bars, "Id", "Name"))
当表单被提交时,MVC将值与Foo对象相关联,并且还创建一个仅设置了Id的新Bar对象。
当我尝试保存对象时,EF会返回异常。它尝试创建一个Bar对象,它将失败,因为Bar对象只有Id集 我认为EF很聪明,需要在Bar中设置Id并获取它。
所以我的问题是:有没有办法通过导航属性设置关系,而不必在之前获取它?
我的模型的导航属性没有公开的外键,我正在寻找一个不需要它的解决方案。
答案 0 :(得分:0)
EF需要Foo.BarID
属性来确定如何保留树。没有其他办法。