如果您有以下域模型:
public class Test
{
public string Description { get; set; }
public TestB A { get; set; }
public TestB B { get; set; }
public TestB C { get; set; }
}
public class TestB
{
public string Name { get; set; }
public string Description { get; set; }
}
你有一个具有以下结构的表:
Test
- Description
- NameA
- DescriptionA
- NameB
- DescriptionB
- NameC
- DescriptionC
其中名称和描述对映射到复杂类型 B 的单个实例。
假设数据库模式无法更改,是否有任何方法可以纯粹使用流畅的 API 来定义此映射?
我让它以合理的方式工作的唯一方法是派生 TestB 的子类型并像这样映射它们:
modelBuilder.ComplexType<TestB>().Property(x => x.Name).HasColumnName("NameA");
modelBuilder.ComplexType<TestB>().Property(x => x.Description).HasColumnName("DescriptionA");
modelBuilder.ComplexType<TestB1>().Property(x => x.Name).HasColumnName("NameB");
modelBuilder.ComplexType<TestB1>().Property(x => x.Description).HasColumnName("DescriptionB");
我宁愿不必纯粹为实体框架的映射定义派生类型。