2017-10-28 5 views
0

私はちょっと混乱しています。私はEFのエンティティークラスに従っています。EFと初期化ナビゲーションプロパティ

public class Identity 
    { 
     public Identity() 
     { 

     } 
     [Key] 
     public long Id { get; set; } 
     public string UserName { get; set; } 
    public string Password { get; set; } 
     public virtual ClientDetails ClientDetails { get; set; } 

    } 

私はコンストラクタでナビゲーションプロパティ(ないコレクション)を初期化することは推奨されていないことをStackOverflowの中の場所のカップルでお読みください。

誰かが私になぜこのように理解できるのでしょうか?

おかげ アヌ

答えて

1

ナビゲーションプロパティは、エンティティフレームワークによって読み込まれます(少なくともあなたは、そのオブジェクトを移入するためにそれを伝えるために含める()メソッドを使用する場合)あなたがアイテムを取得する場合。カバーの下に、あなたがナビゲートしているオブジェクトへの外部キーが作成されます。これは、生成されたマイグレーション内で見ることができます。

リフレクションを使用してクラスのインスタンスをインスタンス化するため、エンティティフレームワークがデータベースから項目を取得すると、コンストラクタ内のコードは実質的に無視されます(このプロセスではにデフォルトのコンストラクタが必要です。実行時例外をスローする)、リフレクションを使用して、データベースから取得したものを使用してさまざまなプロパティの値を設定します。

+0

クリスおかげさまで、コレクションにも同じことは適用されませんか?コレクションを初期化する必要があるのはなぜですか?それを初期化するためにリフレクションを使用するフレームワークはありませんか? –

+0

私は、実際にはコレクションについて特に何が違うのかよく分かりません。コンストラクタロジックの点で2つを区別するこれらの投稿を見ている場所へのリンクを提供できますか? '空のコレクションがあなたのコードの* rest *のヌルコレクションよりも優れているのと同じくらい簡単です。 –

関連する問題