我正在使用带有实体框架的SQL Server 2012,一个通用存储库和一个服务层。我打算一直使用EF和SQL Server。
这工作正常,但有人向我建议我不需要在EF的内置存储库之上存储通用存储库。
有人可以告诉我使用通用存储库是否有任何好处?我不是在寻找关于其中一个或另一个的经验 过去告诉我,只要提到意见一词,问题就会被人们关闭:-(
答案 0 :(得分:2)
您所建议的内容在ORM世界中也称为二级缓存。虽然它可以大大提高性能,但很难正确实现。这里有一些资源可以探索优缺点,并讨论实现细节:
http://msdn.microsoft.com/en-us/magazine/hh394143.aspx
http://queue.acm.org/detail.cfm?id=1394141
答案 1 :(得分:1)
向数据层添加数据模式(例如通用存储库模式)提供了一定程度的抽象,这反过来又具有使代码可测试的优势。
另外,您可能要考虑与GR耦合的另一种数据模式是工作单元模式。这将允许您对事务进行分组并执行逻辑操作,例如提交和回滚更改。
我个人认为使用这些模式没有任何性能提升,但它确实使开发更容易,并且使代码更易于维护,我认为这是一个优势。
答案 2 :(得分:0)
存储库模式用于持久化和检索域的聚合(聚合是包含实体和值对象(DDDesign)的东西)。实体框架默认支持UnitOfWork模式(context.SaveChanges()),您仍然需要存储库模式来检索和保留您的聚合和实体。 大多数人都使用UnitofWork并处理数据访问层中的CRUD操作,但正如我刚才提到的,实体框架支持单元工作,您只能在以后的存储库中使用存储库模式。
看到这篇博文,希望有所帮助:
http://ehsanghanbari.com/Post/23/layer-supertype-pattern-with-example-in-c