Iコレクション 対リスト Entity Frameworkで質問する

Iコレクション 対リスト Entity Frameworkで質問する

いくつかの Entity Framework アプリケーションの設計に取り掛かる前に、私はウェブキャストを数回見ただけでした。実際にはそれほど多くのドキュメントを読んでいなかったので、今ではそのせいで苦しんでいるように感じています。

List<T>私は授業で使用していますが、非常にうまく機能しています。

今、私はいくつかのドキュメントを読みましたが、 を使用する必要があると書かれていますICollection<T>。 これを変更しても、モデル コンテキストの変更は発生しませんでした。 これは、 と の両方List<T>ICollection<T>を継承しておりIEnumerable<T>、それが EF に実際に必要なためでしょうか?

しかし、そうであれば、なぜ EF のドキュメントIEnumerable<T>には ではなく が必要であると記載されていないのでしょうかICollection<T>?

ベストアンサー1

Entity Framework は、インターフェイスの一部ではない操作ICollection<T>をサポートする必要があるため、を使用します。AddIEnumerable<T>

また、だったを使用するとICollection<T>、単にList<T>実装として公開することになります。List<T>にはIList<T>、、、ICollection<T>およびが付属していますIEnumerable<T>

あなたの変更に関しては、インターフェースを介して公開することは、List<T>機能しているにもかかわらず、良い選択です。インターフェースは契約を定義しますが、実装は定義しません。実装できた変更します。場合によっては、実装はHashSet<T>などになる可能性があります。(ちなみに、これは Entity Framework 以外にも使用できる考え方です。オブジェクト指向の良い方法は、実装ではなくインターフェイスに向けてプログラミングすることです。実装は変更される可能性があり、実際に変更されます。)

おすすめ記事