我们最近从拥有自己的InverseProperty(EntityChildNavigationProperty)和ForeignKey(EntityForeignKeyProperty)的自定义属性转变为让我们的自定义属性继承自EntityFramework的InverseProperty和ForeignKey,因为它们完成了相同的任务。我们保留了原始属性以确保向后兼容,但是现在遇到了此问题。
下面(大致)是我所拥有的类(无论如何都是重要的一点……)。任何想法,将不胜感激。每当执行查询时,而不是在初始化Context时,似乎就会发生该错误。
这个想法是,我们将拥有一个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; }
}