我应该使用我的OR / M作为我的工作单位和存储库

时间:2012-08-27 15:26:56

标签: design-patterns orm repository-pattern unit-of-work

我目前将我的工作单元和存储库对象拆分为他们自己的项目,该项目访问包含所有OR / M(nHibernate)代码的不同项目。

我听说过这只是一个不必要的抽象,我应该使用我的OR / M作为存储库和工作单元。

执行此操作或不执行此操作的意见和原因是什么?

1 个答案:

答案 0 :(得分:1)

分割OR / M和工作单元存储库

至少有三个好处
  • 控制反转和更简单的配置 - 工作单元存储库抽象 不应该直接依赖于 nHibernate 。因此,您将获得解耦代码,遵循SRP的明显方法以及其他SOLID原则的优势。并且可以在不需要的地方摆脱 nHibernate
  • 单元测试的执行速度和简单性 - 可以在不运行 nHibernate 的情况下模拟/存储工作单元存储库的单元测试在背景中
  • 按合同设计 - 为工作单元存储库建立单独的合同,而不与 nHibernate混合

ps:不要误解我的意思,我计算 nHibernate 可用于.Net的最佳OR / M之一,但通常不需要在代码中随处可见。