いくつかの Entity Framework アプリケーションの設計に取り掛かる前に、私はウェブキャストを数回見ただけでした。実際にはそれほど多くのドキュメントを読んでいなかったので、今ではそのせいで苦しんでいるように感じています。
List<T>
私は授業で使用していますが、非常にうまく機能しています。
今、私はいくつかのドキュメントを読みましたが、 を使用する必要があると書かれていますICollection<T>
。 これを変更しても、モデル コンテキストの変更は発生しませんでした。 これは、 と の両方List<T>
がICollection<T>
を継承しておりIEnumerable<T>
、それが EF に実際に必要なためでしょうか?
しかし、そうであれば、なぜ EF のドキュメントIEnumerable<T>
には ではなく が必要であると記載されていないのでしょうかICollection<T>
?
ベストアンサー1
Entity Framework は、インターフェイスの一部ではない操作ICollection<T>
をサポートする必要があるため、を使用します。Add
IEnumerable<T>
また、だったを使用するとICollection<T>
、単にList<T>
実装として公開することになります。List<T>
にはIList<T>
、、、ICollection<T>
およびが付属していますIEnumerable<T>
。
あなたの変更に関しては、インターフェースを介して公開することは、List<T>
機能しているにもかかわらず、良い選択です。インターフェースは契約を定義しますが、実装は定義しません。実装できた変更します。場合によっては、実装はHashSet<T>
などになる可能性があります。(ちなみに、これは Entity Framework 以外にも使用できる考え方です。オブジェクト指向の良い方法は、実装ではなくインターフェイスに向けてプログラミングすることです。実装は変更される可能性があり、実際に変更されます。)