EF 4.1 Code First 添加到外键集合

Posted

技术标签:

【中文标题】EF 4.1 Code First 添加到外键集合【英文标题】:EF 4.1 Code First adding to a foreign key collection 【发布时间】:2011-03-24 14:47:17 【问题描述】:

如果我有一个具有另一个实体的集合属性的实体。添加新实体及其相关实体的最佳方法是什么?我遇到的问题是该集合最初为空。

            var form = new Form()
            
                Name = "TestForm"
            ;
            ctx.Forms.Add(form);

            var formField = new FormField()
            
                Name = "TestField"
            ;
            form.FormFields.Add(formField);

            ctx.SaveChanges();

上面的 form.FormFields 属性为空,所以我得到了一个异常。我知道我可以将关系设置为另一个方向,但我还没有在 FormFields 上定义 Form 属性(我真的不想这样做)。

那么,最干净的解决方案是什么?

【问题讨论】:

我应该提到 FormFields 属性是这样声明的: public virtual IList FormFields get;放; 【参考方案1】:

最简单的解决方案是像这样初始化集合:

var form = new Form() 
  Name = "TestForm"
  ;
ctx.Forms.Add(form);
var formField = new FormField() 
  Name = "TestField"
;
if(form.FormFields == null)
  form.FormFields = new List<FormField>();
form.FormFields.Add(formField);
ctx.SaveChanges();

【讨论】:

以上是关于EF 4.1 Code First 添加到外键集合的主要内容,如果未能解决你的问题,请参考以下文章

EF 4.1 中使用 Code First 的 ComplexType 集合属性

EF Code First:定义外键

我应该如何在 MVC3 中使用 Code First Entity Framework (4.1) 声明外键关系?

实体框架-EF Code First Select外键

EF之Code First设置主外键关系

没有导航属性的EF Code First外键