我有2个继承自同一基类的子类。它们都映射回同一个表。如果db表中的field1为null且field2不为null,则它是一个子类。如果field1不为null且字段2为null,则它是另一个子类。
我一直收到错误。实际的消息是:“无效的列名'Discriminator'。”它实际上是指Discriminator ......我并没有把它作为一个通用术语。
以下是我的代码示例:
DatabaseTableA
TableAId ( PK , int )
FooId ( FK , int , null )
BarId ( FK , int , null )
Prop1 ( int )
Prop2 ( int )
Prop3 ( int )
public abstract class BaseClass
{
public int Prop1{ get; set; }
public int Prop2{ get; set; }
public int Prop3{ get; set; }
}
public class Foo : BaseClass
{
public int FooId{get;set;}
}
public class Bar : BaseClass
{
public int BarId{get;set;}
}
internal class BaseClassMap : EntityTypeConfiguration<BaseClass>
{
public BaseClassMap()
{
ToTable("DatabaseTableA");
HasKey( e => e.TableAId);
Map<Foo>( m => m.Requires("BarId").IsDBNull());
Map<Bar>( m => m.Requires("FooId").IsDBNull());
}
}
如何正确映射?
答案 0 :(得分:0)
实体框架将假定从映射到数据库中的表的POCO类继承的任何类都需要Discriminator列,即使派生类不会保存到数据库中。
请在此处查看解决方案EF Code First "Invalid column name 'Discriminator'" but no inheritance