チュートリアルでは、ナビゲーション プロパティとしてこれをよく見かけますICollection<T>
。
これは Entity Framework の必須要件ですか? 使用できますかIEnumerable
?
または のICollection
代わりにを使用する主な目的は何ですか?IEnumerable
List<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