4

如果您有以下域模型:

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");

我宁愿不必纯粹为实体框架的映射定义派生类型。

4

0 回答 0