创建新的复杂对象; EF尝试创建新的相关对象而不是关联对象

时间:2014-03-04 00:55:56

标签: c# asp.net-mvc entity-framework entity-framework-6 asp.net-mvc-5.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的Ids一致 像这样:

@Html.DropDownListFor(n => n.Bar.Id, new SelectList(ViewBag.Bars, "Id", "Name"))

当表单被提交时,MVC将值与Foo对象相关联,并且还创建一个仅设置了Id的新Bar对象。

当我尝试保存对象时,EF会返回异常。它尝试创建一个Bar对象,它将失败,因为Bar对象只有Id集 我认为EF很聪明,需要在Bar中设置Id并获取它。

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

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

1 个答案:

答案 0 :(得分:0)

EF需要Foo.BarID属性来确定如何保留树。没有其他办法。