为什么ObjectContext类不是从某些接口派生的?

Per*_*der 5 unit-testing mocking repository-pattern entity-framework-4

我认为MS的人比我更聪明.我试图构建/测试几乎遵循这种方法的存储库,除了我想在存储库中松散地耦合ObjectContext依赖项.我发现,为了做到这脱钩我需要跳了很多篮球的,如图中这种 article.Even这种方法很难与何时工作

  1. 您有一个现有数据库的edmx
  2. 您有一个围绕ObjectContext接口和IObjectSet构建的通用存储库
  3. 在进行单元测试时,您希望伪造此对象上下文并将所有操作保留在内存中.想想测试存储库.

现在真正的问题是,为什么ObjectContext的创建者决定不拥有IObjectContext?

我希望我的问题有道理,如果有人能够证明它没有并向我指明道路,我将很高兴.

提前致谢!

Ale*_*ven 5

由于上下文是一个部分类,您可以在一个单独的文件中轻松地添加一个接口: public partial class YourContext : IMyCustomInterface,并且您可以在生成的ObjectContext中放入要使用的任何签名的IMyCustomInterface.

或者你可以采用(通常)更推荐的方式,即在ObjectContext中进一步抽象到存储库,就像在这篇博文中那样(整个系列的文章很有趣和相关)或者这个.