EF代码优先;多对多的集合是空的?

时间:2012-09-26 13:42:16

标签: entity-framework many-to-many entity-relationship

使用EF多对多关系,我是否必须手动实例化对象的相应集合?

...一样

public class Class1 {
  [Key]
  public int Id { get; set;
  public List<Class2> OtherObjects {get; set;}
}

public class Class2 {
  [Key]
  public int Id { get; set;
  public List<Class1> OtherObjects {get; set;}
}

还有其他地方......

Class1 c = new Class1 {
  OtherObjects = new List<Class2>(); // necessary? Do I have to do this?
};

c.OtherObjects.Add(new Class2());

喜欢这个?因为当我构建一对多关系时,集合似乎会自动实例化。这与多对多关系有何不同?或者当集合 OtherObjects 为空时,我的应用程序中是否存在错误或错误行为?

1 个答案:

答案 0 :(得分:2)

你必须这样做。在客观上,您可以在构造函数中实例化集合。

旁注:当我有一对多时,我需要实例化我的馆藏。我不确定你为什么不需要。

假设下面的课程。

public class Class1 {
  [Key]
  public int Id { get; set;
  public Class2 OtherObject {get; set;}
}

public class Class2 {
  [Key]
  public int Id { get; set;
  public List<Class1> OtherObjects {get; set;}
}

你可以这样做

Class1 class1 = new Class1();
class1.OtherObject = new Class2();

但是,如果您以其他方式进行分配,则必须实例化您的集合。

Class2 class2 = new Class2();
class2.OtherObjects = new List<Class1>(); //required
class2.OtherObjects.Add(new Class1());