5

Entity Framework のクエリ ロジックを単体テストしたいとします。1 つの方法は、簡単にモックできるように式ツリーを構築DbSet<T>する前に を変換することです。IQueryable<T>これは「安全」で、注意すべきことはありますか?

4

2 に答える 2

7

安全であるだけでなく、合法で完全に標準化されています。これが OO のすべてです。あなたはただ落ち込んでいます。A DbSetHAS はIQUeryable、設計者によって定義された契約に従って、 である必要があります。

于 2013-01-04T13:34:13.370 に答える
4

注意してくださいAsQueryable()IQueryable<IEntity>を呼び出した後にAsQueryable()変数の 1つが型である場合、変数の具体的な型が何であるかがわかりません(DbSet<IEntity>例では)。

これは OOP の観点からは完全に有効ですが(それがインターフェイスの要点です!)、多くのバグや間違いにつながる可能性があります。ソースを列挙するまでDbSet<IEntity>、実際にはクエリを実行しないことに注意してください。

IQueryable<IEntity>そのため、たとえば、メモリ内(たとえば) をusing ...new List<IEntity>{ ... }.AsQueryable()の結果と結合することはできません。DbSet<IEntity>.Union(...)

于 2013-01-04T13:48:00.140 に答える