有的DbContext初始化ICollection的導航屬性而不是其他
public class ClassOne
{
[Key]
public virtual int ClassOneID { get; set; }
[InverseProperty("ClassOne")]
public virtual ICollection<ClassTwo> ClassTwoCollection { get; set; }
}
public class ClassTwo
{
[Key]
public virtual int ClassTwoID { get; set; }
[ForeignKey("ClassOne")]
public virtual int ClassOneID { get; set; }
[InverseProperty("ClassTwoCollection")]
public virtual ClassOne ClassOne { get; set; }
[InverseProperty("ClassTwo")]
public virtual ICollection<ClassThree> ClassThreeCollection { get; set; }
[InverseProperty("ClassTwo")]
public virtual ClassFour ClassFour { get; set; }
[InverseProperty("ClassTwoPrimary")]
public virtual ICollection<ClassFour> ClassFourCollectionAsPrimary { get; set; }
}
public class ClassThree
{
[Key]
public virtual int ClassThreeID { get; set; }
[ForeignKey("ClassTwo")]
public virtual int ClassTwoID { get; set; }
[InverseProperty("ClassThreeCollection")]
public virtual ClassTwo ClassTwo { get; set; }
}
public class ClassFour
{
[Key]
[ForeignKey("ClassTwo")]
public virtual int ClassTwoID { get; set; }
[ForeignKey("ClassTwoPrimary")]
public virtual int ClassTwoPrimaryID { get; set; }
[InverseProperty("ClassFour")]
public virtual ClassTwo ClassTwo { get; set; }
[InverseProperty("ClassFourCollectionAsPrimary")]
public virtual ClassTwo ClassTwoPrimary { get; set; }
}
如果我創建一個ClassOne:myDbCntxt.ClassOneSet.Create();
的ClassTwoCollection被初始化。
如果我創建ClassTwo:myDbCntxt.ClassTwoSet.Create();
ClassThreeCollection和ClassFourCollectionAsPrimary爲null。
爲什麼?
啓用代理創建,我可以看到生成的類名,它們是代理類。 我知道我正在裝修我的房產,但這不是今天的問題。
我想要了解的是爲什麼ClassTwo Collection屬性在從DbContext創建時未初始化。
感謝
UPDATE:
的問題實際上有另一個成員不宣佈爲ClassTwo虛擬。我想有一個規則,所有的公共成員都應該是虛擬的,以便在代理中初始化集合屬性。
我只運行你的代碼,它適用於我 - 初始化ClassTwoSet中的兩個集合。 –
感謝您測試我的代碼。 –