1 つのエンティティを Entity Framework の 2 つの異なるテーブルにマッピングするのに苦労しています。そのうちの 1 つはオプションであり、概要を簡単に説明できます。
コア テーブルであるメイン テーブルが 1 つあります。これは、社内の多くのアプリケーションで使用されているため、このテーブルを変更したくありません。
新しいアプリケーションでは、追加する機能の一部をサポートするために、さらにいくつかの列が必要でした。
これらの両方のテーブルに情報を保存する単一のエンティティ モデルを作成しました。これらの両方のテーブルにレコード (主キーと外部キーで関連付けられている) がある場合、正常に動作しています。
ただし、履歴レコードの場合、この新しいテーブルには関連付けられたレコードがなく、エンティティ セットを取得できません。
以下はコードスニペットです。
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");
}
}
これらのテーブルを 2 つの異なる POCO クラスに分割し、リレーションシップを指定すると、正常に機能します。
しかし、機能的には同じテーブルであるため、単一エンティティでこれを実現したいと考えています。
ガイダンスを提供してください、または私が間違っている場合は、私の英語がそれほど上手ではないことを明らかにしてください.
ありがとう