1. ホーム
  2. c#

[解決済み] 多人数/一人多役の関係でIEnumerableやList<T>ではなくICollectionを使用する理由は何ですか?

2022-03-24 12:13:09

質問

チュートリアルでよく見かける、ナビゲーションプロパティが ICollection<T> .

これはEntity Frameworkの必須要件なのでしょうか?を使用できますか? IEnumerable ?

を使用する主な目的は何ですか? ICollection の代わりに IEnumerable あるいは List<T> ?

解決方法は?

通常、何を選択するかは、どのメソッドにアクセスする必要があるかによって決まります。一般的には IEnumerable<> (MSDN: http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.aspx ) を使用すると、反復処理だけが必要なオブジェクトのリストになります。 ICollection<> (MSDN: http://msdn.microsoft.com/en-us/library/92t2ye13.aspx ) を使って、反復して変更する必要のあるオブジェクトのリストを作成します。 List<> 反復処理、修正、ソートなどが必要なオブジェクトのリスト(一覧はこちらをご覧ください。 http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx ).

より具体的な観点からは、レイジーローディングはタイプの選択と密接に関係しています。デフォルトでは、Entity Frameworkのナビゲーションプロパティは、変更追跡が付属しており、プロキシである。ナビゲーションプロパティとして動的プロキシを作成するために、仮想型である が必要です。 インプリメント ICollection .

リレーションシップの端である "many" を表すナビゲーション プロパティは、ICollection を実装する型を返す必要があります。- POCOプロキシを作成するための要件 <上 MSDN

リレーションシップの定義と管理に関する詳細情報 MSDN