Entity Framework のクエリ ロジックを単体テストしたいとします。1 つの方法は、簡単にモックできるように式ツリーを構築DbSet<T>
する前に を変換することです。IQueryable<T>
これは「安全」で、注意すべきことはありますか?
質問する
2486 次
2 に答える
7
安全であるだけでなく、合法で完全に標準化されています。これが OO のすべてです。あなたはただ落ち込んでいます。A DbSet
HAS は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 に答える