多重继承我试图映射在TPC风格使用实体框架一些类,并得到了以下错误:与实体框架TPC
Error: The type 'A' cannot be mapped as defined because it maps inherited properties from types that use entity splitting or another form of inheritance. Either choose a different inheritance mapping strategy so as to not map inherited properties, or change all types in the hierarchy to map inherited properties and to not use splitting.
当我用下面的类会出现此错误:
public abstract class BaseEntityTest
public abstract class BaseEntityTest2 : BaseEntityTest
public abstract class BaseEntityTest3 : BaseEntityTest2
public class A: BaseEntityTest3 // this class is the only one with a table in the db
在OnModelCreating方法中,我添加了以下代码以获得TPC映射
modelBuilder.Entity<A>().Map(m =>
{
m.MapInheritedProperties();
m.ToTable("A");
});
当我从结构中排除BaseEntityTest2(因此A只从BaseEntityTest而不是BaseEntityTest2继承)时,错误消失。这是否意味着不可能创建这个映射或者我只是错过了什么?
编辑:类
属性:为EF 4.3.1及更早版本发生
public abstract class BaseEntityTest
{
[Key]
public Guid Id { get; set; }
public String Info { get; set; }
[Required]
public DateTime CreationDate { get; set; }
[Required]
public String CreationUser { get; set; }
[Required]
public DateTime ModificationDate { get; set; }
[Required]
public String ModificationUser { get; set; }
[ConcurrencyCheck]
[Required]
public int LockVersion { get; internal set; }
}
public abstract class BaseEntityTest2 : BaseEntityTest
{
[Required]
public string Name { get; set; }
public string Description { get; set; }
}
public abstract class BaseEntityTest3: BaseEntityTest2
{
[Required]
public DateTime FromDate { get; set; }
public DateTime ThruDate { get; set; }
}
public class A: BaseEntityTest3{
public String Test { get; set; }
}
这是全貌吗?在我住的地方工作得很好:)(VS2012,EF 5)。 –
我试过这个使用EF 4.3.1(VS 2012) – Eggi
你有什么属性在你的课堂上? –