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