随着我深入研究DbContext,DbSet和相关接口,我想知道为什么你需要围绕这些实现实现一个单独的"通用"存储库?
它看起来像DbContext和IDbSet做你需要的一切,并在DbContext中包含"工作单元".
我在这里遗漏了什么,或者似乎人们喜欢无缘无故地添加另一层依赖.
我研究了一些关于我可以用来对DbContext进行单元测试的技术的信息.我想在上下文中添加一些内存数据,以便我的测试可以针对它运行.我正在使用Database-First方法.
我发现最有用的两篇文章是这个和这个.该方法依赖于创建一个MyContext和FakeContext都将实现的IContext接口,允许模拟上下文.
但是,正如某些人所指出 的 那样,我试图避免使用存储库来抽象EF,因为EF 4.1已经通过DbSet和DbContext实现了存储库和工作单元模式,我真的想保留EF实现的所有功能.团队无需使用通用存储库维护它们,正如我在其他项目中所做的那样(这有点痛苦).
使用IContext会引导我走同一条路(或者不是吗?).
我考虑创建一个继承自主MyContext的FakeContext,从而利用它下面的DbContext来运行我的测试,而不需要访问数据库.我找不到类似的实现,所以我希望有人可以帮助我.
我做错了什么,或者这会导致我遇到一些我没想到的问题?