Наличие
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 будут равны нулю.
Почему?
Создание прокси включено, и я вижу сгенерированное имя класса, и это прокси-классы.
Я знаю, что переоценил свои свойства, но сегодня это не вопрос.
Все, что я хотел бы понять, это ПОЧЕМУ для ClassTwo свойства Collection не инициализируются при создании из DbContext.
Спасибо
UPDATE
Проблема в том, что другой член НЕ объявлен виртуальным в ClassTwo. Я предполагаю, что есть правило, что все ваши открытые члены должны быть виртуальными, чтобы свойства коллекции были инициализированы в прокси.