同じ基本クラスから継承する 2 つのサブクラスがあります。それらはすべて同じテーブルにマップされます。db テーブルの field1 が null で、field2 が null でない場合、それは 1 つのサブクラスです。field1 が null ではなく、field 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());
}
}
これを正しくマッピングするにはどうすればよいですか?