IEnumerable や List ではなく ICollection を使用する理由 多対多/一対多の関係について質問する

IEnumerable や List ではなく ICollection を使用する理由 多対多/一対多の関係について質問する

チュートリアルでは、ナビゲーション プロパティとしてこれをよく見かけますICollection<T>

これは Entity Framework の必須要件ですか? 使用できますかIEnumerable?

または のICollection代わりにを使用する主な目的は何ですか?IEnumerableList<T>

ベストアンサー1

通常、どの方法を選択するかは、どの方法にアクセスする必要があるかによって異なります。一般的には、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

リレーションシップの「多」側を表すナビゲーション プロパティは、ICollection を実装する型を返す必要があります。ここで、T はリレーションシップのもう一方の側にあるオブジェクトの型です。 -POCO プロキシを作成するための要件MSDN

関係の定義と管理に関する詳細情報MSDN

おすすめ記事