2017-02-20 4 views
0

Entity Frameworkの特定のフィールドを複数の列にマップする方法はありますか?特定のシナリオでは、テーブルごとの階層構造で継承を使用しています。基本型テーブルと具象型テーブルの両方に現れるフィールドがあります。Entity Frameworkに重複したデータを格納する

例:

abstract class BaseEntity 
{ 
    int id { get; set; } 
    DateTime createDate { get; private set; } 
    string TypeName { get; private set; } 

} 

public class Person : BaseEntity 
{ 
    int id { get; set; } 
    DateTime createDate { get; private set; } 
    string TypeName { get; private set; } 
    string FirstName {get; set;} 
    string LastName {get; set;} 
    DateTime DateOfBirth {get; set;} 
} 

基底クラス表

int ID, 
DateTime createDate, 
varchar TypeName 

具象クラス表

int ID, 
DateTime createDate, 
varchar FirstName, 
varchar LastName, 
DateTime DateOfBirth 

それが主キーであるため、これは、両方のテーブルにIDを持つ問題ではありません。ただし、作成日は別々のデータとして扱われます。

主な理由は、データベースの保守とサポートのためです。私はデータの重複が良い習慣ではないことを理解しています。これは、いくつかのフィールドの場合のみです。

答えて

0

これは不可能ですが、CreateDateが継承されたプロパティをシャドーイングしているという警告が表示される可能性が高いため、これも良いC#コードではありません。

派生テーブルの挿入/更新が完了した後に値を挿入/更新するデータベーストリガを使用して、これを解決できます。

+0

c#コードは、そのように見える必要はありません。別の方法がある場合、プロパティをPersonクラスに読み込む必要はありません。私はあなたの示唆が何らかの形でコード内で行われることを「トリガー」したい – mfreedm52

関連する問題