停止EF继承

时间:2016-01-21 09:22:58

标签: c# entity-framework inheritance

我有三种类型MaliOp,LoanEBD,PrmEBD

<script language="javascript" type="text/javascript">
<xsl:text>
function collapseandexpand(){
if(document.getElementById ('subList').style.display == 'none')
document.getElementById ('subList').style.display = 'block';
else
document.getElementById ('subList').style.display = 'none';         
}
</xsl:text>
</script>

两个实体PrmEBD和LoanEBD继承自MaliOp。我希望通过使用这三种类型在Entity Framework中创建DBContext。 我在每个数据库中有三个数据库表。 我不想使用任何EF Inhertance Strategy并将每个策略添加为Independent Types。但不能和EF使用Inhertance策略中的任何一个。 我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

  1. 创建一个IMaliOp接口,让MaliOp实现它。
  2. 让两个类同时实现IMaliOp接口
  3. 然后使用automapper(或类似的东西)自动将信息从Entity对象传输到常规对象。
  4. 这两个类代表DTO(数据传输对象)。对于DTO-s来说有很多策略

    你应该避免让Classes继承实体,否则你的应用程序类会过于紧密耦合,并且更改可能会让他们自己变得太痛苦

答案 1 :(得分:0)

在您的上下文中,覆盖OnModelCreating;

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<PrmEBD>().ToTable("PrmEBDs");
    modelBuilder.Entity<LoanEBD>().ToTable("LoanEBD");
    modelBuilder.Entity<MaliOp>().ToTable("MaliOp");
}

这将在您的数据库中创建三个单独的表。

当您对MaliOp进行查询时,您需要确保不从所有三个表中提取实例。您可能想要为所有三个创建共同interface的方法,以便它们实际上也不会相互继承

相关问题