2011-07-28 4 views
0

新しいエンティティモデルの作成を進めています。コードファーストでカスタムタイプのプロパティを継承することはできません

私のような自然に継承する必要がありますいくつかの繰り返しのプロパティ(列)、識別:今すぐ

などCreatedAt、ID、CREATEDBYを、私はこの問題のための基本クラスを作成し、私は「まで、すべてがOK作品例えば、ベース・クラスでカスタム・タイプのプロパティを定義するm個: パブリックユーザCREATEDBY {得る;セット;}

EngineExecutionExceptionがスローされたアプリケーションを実行します。

公開ユーザCreatedBy {get; set;}を省略し、int、string、datetimeプロパティのみを残しておけば、それはうまくいき、DB作成に反映されていることがわかります。

私の間違いは何ですか?

+0

全体の例外とコードを投稿してください。 – Mariusz

答えて

0

あなたのプロパティは仮想でなければならないと思います。つまり、このプロパティは外部キーです。ユーザーIDは、ユーザーテーブルへのキーである場合

+0

それはバーチャルとしてマークされています... –

+1

バーチャルマーキングは必ずしも外部キーを意味する必要はありません。バーチャルネイティブレイジーローディングを有効にします。非バーチャルナビゲーションは代わりにeagarローディングを利用します。 –

0

(例えばint)が、その後、あなたはUserIDプロパティは、テーブル内のフィールドへの直接参照され

public int UserID { get; set; } 
public virtual User CreatedBy { get; set; } 

だろう。 CreatedByプロパティは、Userテーブルの表現になるUserオブジェクトへの参照です。他の場所で述べたように、virtualキーワードは、Userオブジェクトを遅延ロードするために使用されます。

UserIDプロパティは、Userテーブルとオブジェクトのプライマリキーと一致します。彼らの名前が同じでない場合は、それらを一致させる方法がありますが、それが最も簡単です。 CreatedByのタイプ、タイプ、データベースの表現方法など、CreatedByの詳細情報を提供できる場合、私はあなたの設定にもっと具体的な答えを与えることができます。

*フォーマット用に編集されています。

関連する問題