使用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 为空时,我的应用程序中是否存在错误或错误行为?
答案 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());