0

我正在使用带有实体框架、通用存储库和服务层的 SQL Server 2012。我打算始终使用 EF 和 SQL Server。

这工作正常,但有人建议我在 EF 的内置存储库之上真的不需要通用存储库。

有人可以告诉我使用通用存储库是否有任何优势?我不是在寻找关于其中一个或另一个的意见,因为过去的经验告诉我,一旦提到意见这个词,问题就会被人们关闭:-(

4

3 回答 3

2

您的建议在 ORM 世界中也被称为二级缓存。虽然它可以大大提高性能,但很难正确实施。这里有一些资源可以探索优缺点,并讨论实现细节:

http://msdn.microsoft.com/en-us/magazine/hh394143.aspx
http://queue.acm.org/detail.cfm?id=1394141

于 2013-07-06T06:21:27.257 回答
1

向数据层添加数据模式(例如通用存储库模式)提供了一定程度的抽象,这反过来又具有使您的代码可测试等优势。

附带说明一下,您可能要考虑与 GR 耦合的另一种数据模式是工作单元模式。这将允许您对事务进行分组并执行逻辑操作,例如提交和回滚更改。

我个人认为使用这种模式没有任何性能提升,但它确实使开发更容易,并使代码更易于维护,我认为这是一个优点。

链接到工作单元模式

于 2013-07-06T08:39:22.220 回答
0

存储库模式用于持久化和检索域的聚合(聚合是包括实体和值对象(DDDesign)的东西)。实体框架默认支持 UnitOfWork 模式(context.SaveChanges()),您仍然需要存储库模式来检索和持久化您的聚合和实体。大多数人使用 UnitofWork 并在数据访问层处理 CRUD 操作,但正如我现在提到的,实体框架支持 unitofwork,您以后只能在存储库中使用存储库模式。

看到这篇博文,希望对你有帮助:

http://ehsanghanbari.com/Post/44/does-it-cause-any-kind-of-performance-issue-using-a-base-class-in-layer-supertype-pattern

http://ehsanghanbari.com/Post/8/repository-pattern-practice-in-data-access-layer-via-entity-framework

http://ehsanghanbari.com/Post/23/layer-supertype-pattern-with-example-in-c

于 2014-02-03T20:50:28.927 回答