实体框架 - 多个表的单个实体

时间:2013-04-11 10:07:35

标签: entity-framework-5

我在将单个实体映射到实体框架中的两个不同的表时遇到了一些困难,其中一个是可选的,可以快速概述。

我有一个主表,它是我们公司的许多应用程序使用它的核心表,所以我们真的不想对此表进行任何更改。

在我们的新应用程序中,我们需要更多列来支持我们添加的一些功能。

我创建了一个单独的实体模型,它将信息保存到这两个表中,当这两个表都有记录(通过主键和外键相关)时,它工作正常。

但是对于历史记录,这个新表将没有相关记录,也无法获取任何实体集。

以下是代码段。

public class ModelTable
{
    public string PatientID { get; set; }

    public string Diagnosis1 { get; set; }

    public string Diagnosis2 { get; set; }

    public string Diagnosis3 { get; set; }

    public string Diagnosis4 { get; set; }

    public string Diagnosis5 { get; set; }

    public string Diagnosis6 { get; set; }

    public string Diagnosis7 { get; set; }

    public string Diagnosis8 { get; set; }
}

public class ModelTableMap : EntityTypeConfiguration<ModelTable>
{
    public ModelTableMap()
    {
        //Table1
        this.Map(model =>
        {
            model.Properties(table1 => new
            {
                table1.Diagnosis1,
                table1.Diagnosis2,
                table1.Diagnosis3,
                table1.Diagnosis4,
                table1.Diagnosis5,
                table1.Diagnosis6
            });
            model.ToTable("Table1");
        });
        //Optional Table
        this.Map(model =>
        {
            model.Properties(table2 => new
            {
                table2.Diagnosis7,
                table2.Diagnosis8,
            });
            model.ToTable("Table2");
        });

        this.HasKey(type => type.PatientID);
        this.Property(type => type.PatientID).IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        this.Property(type => type.Diagnosis1).HasColumnName("Diag1");
        this.Property(type => type.Diagnosis1).HasColumnName("Diag2");
        this.Property(type => type.Diagnosis1).HasColumnName("Diag3");
        this.Property(type => type.Diagnosis1).HasColumnName("Diag4");
        this.Property(type => type.Diagnosis1).HasColumnName("Diag5");
        this.Property(type => type.Diagnosis1).HasColumnName("Diag6");
        this.Property(type => type.Diagnosis1).HasColumnName("Diag7");
        this.Property(type => type.Diagnosis1).HasColumnName("Diag8");
    }

}

如果我将这些表拆分为两个不同的POCO类并指定关系,它可以正常工作。

但我想用Single Entity实现这一点,因为在功能上它是一个相同的表。

请提供任何指导,或者如果我做错了,请用我的英语表示不太好。

由于 Sathish所在

1 个答案:

答案 0 :(得分:0)

当前EF版本中的实体拆分需要两个表中的记录。如果要使用实体拆分,则必须为第一个表中的所有现有记录创建空记录。否则你不能使用实体拆分。