我得到了这个简单的类层次;
public class A
{
[Key]
public int Id { get; set; }
}
public class B : A
{
public string Name { get; set; }
}
public class C : A
{
public string Name { get; set; }
}
使用TPH,最终得到的表看起来像这样;
表A,字段Id, Name, Name1, Discriminator.
我希望类B和C的名称属性映射到相同的字段,即名称,使用这些映射
Property(x => x.Id)
.HasColumnName("Id");
Map<B>(m =>
{
m.Properties(p => new
{
Name = p.Name,
});
});
Map<C>(m =>
{
m.Properties(p => new
{
Name = p.Name,
});
});
我如何确保映射到相同的列为我的子类型(B和C)属性名称?是否有一个HasColumnName与属性集合使用?
THP不允许在对象之间共享属性,除非该属性位于基类上。使用TPH,属性要么在所有实现之间共享,要么属于特定实现之一。
Place Name属性在基类上,这应该可以解决您的问题。