实体框架4.1:使用TPH并将属性映射到现有的数据库列



我得到了这个简单的类层次;

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属性在基类上,这应该可以解决您的问题。

相关内容

  • 没有找到相关文章

最新更新