【发布时间】:2011-04-08 15:03:01
【问题描述】:
我认为 MS 的人比我聪明得多。我试图构建/测试一个几乎遵循this 方法的存储库,除了我想在存储库中松散地耦合 ObjectContext 依赖项。我发现为了解耦,我需要跳很多圈,如this 文章所示。即使这种方法也很难使用
- 您有来自现有数据库的 edmx
- 您有一个围绕 ObjectContext 接口和 IObjectSet 构建的通用存储库
- 在进行单元测试时,您希望伪造此对象上下文并将所有操作保留在内存中。考虑测试存储库。
现在真正的问题是,为什么 ObjectContext 的创建者决定不使用 IObjectContext ?
我希望我的问题是有道理的,如果有人能证明它没有并给我指路,我会很高兴。
提前致谢!
【问题讨论】:
-
只想指出,由于在 EF4 中一切都基于从模板生成代码,因此很容易自定义模板以发出 ObjectContext 可以实现的接口。
-
你的问题很有道理,但我担心这是 MS 的问题。
-
@Alex Paven:如果有任何具体的有用链接可以与我分享,我将不胜感激。
-
其实,你甚至不需要修改模板——上下文是一个部分类,所以你需要做的就是添加到它:
public partial class YourContext : IMyCustomInterface,你可以在 IMyCustomInterface 中放入任何签名您想从生成的 ObjectContext 中使用。或者您可以采用(通常)更推荐的方式,即进一步抽象到存储库中,例如 thedatafarm.com/blog/data-access/…(整个系列的帖子都很有趣,尽管可能有更好的实现)。 -
其实,一个好的起点可能是这个:elegantcode.com/2009/12/15/…
标签: unit-testing mocking entity-framework-4 repository-pattern