EF5 (4.4 .NET 4) "свойство навигации не объявлено" TPH
Недавно мы перешли от наличия собственных настраиваемых атрибутов для InverseProperty (EntityChildNavigationProperty) и ForeignKey (EntityForeignKeyProperty) к использованию наших настраиваемых атрибутов, наследуемых от InityProperty EntityFramework и ForeignKey, поскольку они выполняли ту же задачу. Мы сохранили исходные свойства для обеспечения обратной совместимости, но теперь столкнулись с этой проблемой.
Ниже (примерно) классы, которые у меня есть (важные биты в любом случае...). Любые идеи были бы хорошы. Кажется, ошибка возникает всякий раз, когда выполняется запрос, а не при инициализации контекста.
Идея состоит в том, что у нас будет структура TPH, в которой базовый класс будет иметь все стандартные свойства (столбцы), и каждая реализация компонента будет иметь возможность переопределять по мере необходимости или добавлять свои собственные свойства, но сохранять то же имя таблицы (ClassA). и / или ClassB).
Мое единственное предположение здесь состоит в том, что, поскольку EntityFramework теперь видит свои атрибуты, он пытается выполнить некоторые дополнительные проверки, чтобы подтвердить, что дела идут хорошо, но я не понимаю, почему эта конкретная установка вызывает ошибку.
Структура ForeignKey/InverseProperty удовлетворяет базовому классу, так почему производные классы вызывают проблему? Отличается ли он в EF5 (.net 4.5) или EF6?
public class BaseClassA
{
[DataMember]
[EntityChildNavigationProperty("BaseClassA")] //Custom Attribute for InverseProperty
public virtual ICollection<BaseClassB> BaseClassBs { get; set; }
}
public class BaseClassB
{
[DataMember]
public virtual int? BcbBcaId { get; set; }
[DataMember]
[EntityForeignKeyProperty("BcbBcaId")] //Custom Attribute for ForeignKey
public virtual BaseClassA BaseClassA { get; set; }
}
public class ClassA : BaseClassA
{
}
public class ClassB : BaseClassB
{
}
public class Context : DbContext
{
public DbSet<ClassA> ClassAs { get; set; }
public DbSet<ClassB> ClassBs { get; set; }
}