当前位置:  开发笔记 > 编程语言 > 正文

具有相同表数据的实体

如何解决《具有相同表数据的实体》经验,为你挑选了1个好方法。

在我详细说明问题之前,我很清楚数据库不是按常规设计的.遗憾的是,由于它是如何集成的,我无法更改这个特定的数据库,所以我有一个潜在的解决方案,但这几个月都不会实现.与此同时,我需要解决以下问题:

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

发票表

非发票表

我的实体代表这些表上完全相同的数据,相同的列名,在所有条件下都是重复的,除了一个是开票,而另一个代表非开票的客户.但由于它不是一个表,并且有一个标志表示已开票和非开票,我的实体如何链接到这两个表?

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



1> Moho..:

您可以使用table-per-concrete类继承,然后在派生类型上定义表名:

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

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

public YourContext : DbContext
{
    public DbSet InvoicedAccounts { get; set; }
    public DbSet NonInvoicedAccounts { get; set; }

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

        modelBuilder.Entity().Map( m =>
        {
            m.MapInheritedProperties();
            m.ToTable( "NonInvoicedAccountTable" );
        } );
    }
}

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有