我正在尝试将复杂类型映射到表中的多个列或具有不同可空性的多个表中。
假设我有类似的实体:
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();
}
}
将电话映射到不同名称的不同列可以正常工作,但设置可空性却不行。EF 抱怨 IsNull 不一致。
我知道如果我引入传真继承电话,我可以使它工作,但这仅适用于一张桌子。如果我有另一个电话类型列,我将不得不从电话创建另一种类型。我不认为这是可行的。
有没有办法使这项工作?