2015-12-11 24 views
1

在详细说明问题之前,我很清楚数据库不是按照常规设计的。可悲的是,我不能改变这个特定的数据库,因为它是如何集成的,所以我有一个潜在的解决方案,但是这将不会在几个月内实现。同时我需要解决以下问题:具有相同表格数据的实体

问题是我需要建立一个实体,这将代表我们的Accounts。但问题,我们的数据库实现了以下结构:

  • 开具发票的表
  • 未开票表

我的实体,代表这些表完全相同的数据,相同的列名,重复下除发票之外的所有条件均开具发票,而另一个则表示未开发票的客户。但是由于它不是一张表,并且有一个标记表示开票和未开票,我的实体如何链接到这两个表?

由于两个表代表不同的名称,我不能使用[Table("...")]或自动映射功能。我讨厌提出这样的问题,但我找不到有关如何处理这样的问题的任何文档。

+0

我没有答案,但只是出于好奇,两者都做这些表的有相同的列? – Anonymous

+0

@匿名是的,他们有。这使得它更荒谬。 – Greg

回答

5

你可以使用表每个具体的类继承,然后在派生类型定义表名:

public abstract class Account 
{ 
    // common entity code here 
    ... 
} 

public class InvoicedAccount : Account {} 
public class NonInvoicedAccount: Account {} 

public YourContext : DbContext 
{ 
    public DbSet<InvoicedAccount> InvoicedAccounts { get; set; } 
    public DbSet<NonInvoicedAccount> NonInvoicedAccounts { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<InvoicedAccounts>().Map(m => 
     { 
      m.MapInheritedProperties(); 
      m.ToTable("InvoicedAccountTable"); 
     }); 

     modelBuilder.Entity<NonInvoicedAccounts>().Map(m => 
     { 
      m.MapInheritedProperties(); 
      m.ToTable("NonInvoicedAccountTable"); 
     }); 
    } 
} 
相关问题