我有一个奇怪的混合IQueryable<T>
和IList<T>
域对象集合传递到我的应用程序堆栈。我试图尽可能多地维护“延迟查询”或“延迟加载”。我通过两种方式做到这一点:
- 通过使用 LinqToSql 数据层并将
IQueryable<T>
s 通过存储库传递到我的应用程序层。 - 然后在我的应用程序层传递
IList<T>
s 但对象/聚合图中的某些元素与委托“链接”后,以延迟它们的加载。有时甚至委托内容也依赖于IQueryable<T>
源并且DataContext
被注入。
到目前为止,这对我有用。
令人眼花缭乱的困难在于证明这种设计确实有效。IE。如果我在某个地方击败了“懒惰”部分并且我的评估/执行发生得早,那么整个事情就是浪费时间。我希望能够以某种方式对此进行 TDD。
我不太了解委托或线程安全,因为它适用于在同一源上操作的委托。我希望能够模拟DataContext
并以某种方式跟踪延迟(IQueryable<T>
的 SQL 和委托)加载的两种方法,以便我可以进行测试证明这两个函数在应用程序/堆栈的不同级别/层上工作.
由于延迟工作对于设计具有任何价值至关重要,所以我希望看到当我在给定级别(与实时实现分开)破坏设计时测试失败。这可能吗?