1

モデルクラスコンストラクターでプロパティをインスタンス化する必要がある場合と、必要でない場合について、どこかに良い説明があるかどうか疑問に思っていましたか?

MS EF サイトのドキュメントは優れており、多くの関連トピックをカバーしています

リレーションシップとナビゲーション プロパティ - http://msdn.microsoft.com/en-us/data/jj713564
API を使用したリレーションシップの構成http://msdn.microsoft.com/en-us/data/jj591620%20%22Configuring%20relationships% 20%20API を使用

Entity Framework クラス ライブラリ http://msdn.microsoft.com/en-us/library/hh289362%28v=vs.103%29.aspx

また、Book Programming Entity Framework - Code First By Julia Lerman を読む途中です。

Model コンストラクターでプロパティをインスタンス化する必要がある場合をよりよく理解したいと思います。
モデル コンストラクターの新しいプロパティの有無にかかわらず、MS のドキュメントと本にサンプルが表示されます。いくつかのソリューションが newed Up オブジェクトでコンストラクターを使用し、他のソリューションが使用しないのには、おそらく十分な理由があります。と複合型が を持っているよう
です。しかし、単純なタイプの ModelObject は new なしで OK です。Virtual ICollectionnew List<>new RefObjvirtual navigation property

各規則クラスの内部を知らなくても、パターンに固執できますか。または、私が読むべき別のトピックはありますか?

4

1 に答える 1

1

EF が機能するためにモデル コンストラクターでプロパティをインスタンス化する必要はありませんが、より便利になります。

たとえば、クラス Order があり、そのクラスに Order Detail の子があり、新しい Order をデータベースに追加したいとします。

OrderDetails を初期化せずに

var order = new Order();
order.OrderDetails.Add(new OrderDetail()); // this would error because OrderDetails is null

1 つのオプションは、order.OrderDetails = new List(); を呼び出すことです。Add() を使用する前に、Add() を使用するすべての場所でそのコードを繰り返す必要があります。代わりに、そのコードをコンストラクターに配置すると、新しく作成されたすべての注文で OrderDetails を使用できるようになります。

于 2012-11-21T15:56:00.203 に答える