私のアプリケーションスタックに渡されたドメインオブジェクトの奇妙なハイブリッドIQueryable<T>
とコレクションとして見ることができるものがあります。IList<T>
「遅延クエリ」または「遅延読み込み」をできるだけ多く維持しようとしています。私はこれを2つの方法で行います。
- LinqToSqlデータレイヤーを使用し、
IQueryable<T>
リポジトリを介してアプリレイヤーにsを渡す。 - 次に、アプリ層が
IList<T>
sを通過した後、オブジェクト/集計グラフの特定の要素がデリゲートと「チェーン」され、読み込みが延期されます。IQueryable<T>
デリゲートのコンテンツでさえソースに依存し、DataContext
注入される場合があります。
これは今のところ私にとってはうまくいきます。
やみくもに難しいのは、この設計が実際に機能することを証明することです。つまり。どこかで「怠惰な」部分を打ち負かし、評価/実行が早く行われた場合、すべてが時間の無駄になります。どういうわけかこれをTDDできるようにしたいと思います。
同じソースで動作するデリゲートに適用されるため、デリゲートやスレッドセーフについてはよくわかりません。両方の関数がアプリ/スタックの異なるレベル/レイヤーで動作していることを証明するテストを行えるように、読み込みDataContext
を延期する両方の方法(のSQLとデリゲート)をモックしてトレースできるようにしたいと思いますIQueryable<T>
。
設計が任意の値になるように延期が機能することが重要であるため、(実際の実装とは別に)特定のレベルで設計を壊したときにテストが失敗することを確認したいと思います。これは可能ですか?