複合型を 1 つのテーブル内の複数の列、または null 可能性が異なる複数のテーブルにマップしようとしています。
次のようなエンティティがあるとします。
public class Phone
{
public string Number { get; set; }
}
public class Contact
{
public Phone CellPhone { get; set; }
public Phone HomePhone { get; set; }
}
public class Organization
{
public Phone PhoneNumber { get; set; }
public Phone FaxNumber { get; set;}
}
構成は次のようなものです。
public class ContactConfiguration
{
public ContactConfiguration()
{
Property(x => x.CellPhone.Number).HasColumnName("CellPhone").IsRequired();
Property(x => x.HomePhone.Number).HasColumnName("HomePhone").IsOptional();
}
}
public class OrganizationConfiguration
{
public OrganizationConfiguration()
{
Property(x => x.PhoneNumber.Number).HasColumnName("Phone").IsRequired();
Property(x => x.FaxNumber.Number).HasColumnName("Fax").IsOptional();
}
}
電話を異なる名前の異なる列にマッピングすることはうまくいきますが、nullability を設定することはできません。EF は、IsNull が一貫していないと不平を言っています。
電話を継承する Fax を導入すれば機能することはわかっていますが、これは 1 つのテーブルでしか機能しません。Phone 型の別の列があれば、Phone から別の型を作成する必要があります。これは実現可能ではないと思います。
これを機能させる方法はありますか?