これが重複としてマークされる前に、他の関連する投稿を確認しましたが、彼らは私の質問に答えません。
1:1の関係を持つ2つのテーブルを持つレガシーデータベースに取り組んでいます。現在、これらのテーブルごとに1つのタイプ(1Test:1Result)が定義されています。これらの特定のテーブルを1つのクラスにマージしたいと思います。
現在のタイプはこのようになります
public class Result
{
public string Id { get; set; }
public string Name { get; set; }
public string Text { get; set; }
public string Units { get; set; }
public bool OutOfRange { get; set; }
public string Status { get; set; }
public string Minimum { get; set; }
public string Maximum { get; set; }
public virtual Instrument InstrumentUsed { get; set; }
public virtual Test ForTest { get; set; }
}
public class Test
{
public int Id { get; set; }
public string Status { get; set; }
public string Analysis { get; set; }
public string ComponentList { get; set; }
public virtual Sample ForSample { get; set; }
public virtual Result TestResult { get; set; }
}
私は彼らがこのように見えることを望みます
public class TestResult
{
public int Id { get; set; }
public string Status { get; set; }
public string Analysis { get; set; }
public string ComponentList { get; set; }
public string TestName { get; set; }
public string Text { get; set; }
public string Units { get; set; }
public bool OutOfRange { get; set; }
public string Status { get; set; }
public string Minimum { get; set; }
public string Maximum { get; set; }
public virtual Instrument InstrumentUsed { get; set; }
}
私は現在、これらを従来のOracleデータベースにマッピングするためにFluent APIを使用しています。
これらを単一のクラスに組み合わせる最良の方法は何でしょうか?これはレガシーデータベースであることに注意してください。テーブルの変更はオプションではなく、ビューを作成することは、プロジェクトのこの時点で実行可能な解決策ではありません。
両方のテーブルに同じ主キーがある場合は、エンティティ分割を使用してこれを実現できます。
modelBuilder.Entity<TestResult>()
.Map(m =>
{
m.Properties(t => new { t.Name, t.Text, t.Units /*other props*/ });
m.ToTable("Result");
})
.Map(m =>
{
m.Properties(t => new { t.Status, t.Analysis /*other props*/});
m.ToTable("Test");
});
これが便利です 記事