【发布时间】:2014-05-09 18:20:15
【问题描述】:
在使用 ASP.net MVC 和实体框架时,我一直在努力实现存储库和服务模式。
我了解存储库模式的用途以及它如何帮助测试并使数据层可互换。但是,实体框架已经是一个存储库/工作单元模式。我见过的每个存储库模式的实现要么剥夺了 EF 的有用功能,要么实现了一个 IQueryable<T> 属性,这让纯粹主义者感到不安。
如果我正在为我的服务层编写接口,那么实现这些服务的具体版本是我不应该直接在服务中使用实体框架作为我的数据层的原因(而不是将其包装在存储库中/工作单元模式和注入依赖项)?例如:我不能创建一个IService 接口,然后创建一个具体的EfService(实体框架)或NhService(NHibernate 版本)实现吗?
然后我可以使用我的 IoC 容器注入所需的服务和数据上下文。
这是我根据 Sergey 的 cmets 提出的示例:https://github.com/sweeperq/Monona
这就是该模式的实现方式吗?
【问题讨论】:
标签: c# entity-framework dependency-injection repository-pattern