我最近了解了存储库和工作单元设计模式,并认为我会在新的EF4 MVC3项目中实现它们,因为抽象通常很好。
当我将它们添加到项目中时,我想知道果汁是否值得众所周知的挤压,给出以下内容:
我看到使用Repository模式的唯一真正好处是对应用程序进行单元测试。抽象出数据存储似乎并不有用,因为我知道数据存储区不会改变,而且,EF4已经提供了一个非常好的抽象(我只是调用.AddObject(),它看起来像我在修改内存中收集,我只是调用.SaveChanges()已经提供了工作单元模式。)
我是否应该费心实施这种抽象?我觉得必须有一些我遗漏的巨大好处,但我觉得我不需要沿着这条路走下去。我愿意相信;有人可以提起诉讼吗?感谢。
答案 0 :(得分:6)
我建议你reading this answer and all linked questions。存储库是非常流行的模式,它确实使您的应用程序变得干净整洁。它让您觉得您的架构是正确的,但有关EF的存储库模式的一些假设是不正确的。在我看来(在那些答案中描述):
答案 1 :(得分:2)
是是是:) - 首先 - 存储库模式有助于为单元测试注入依赖项。其次,它提供了一个非常清晰的视图,确切地知道哪些数据访问方法可用于获取内容而不是人们错误。直接编码EF层。下载适用于EF4的POCO模板,这样如果您碰巧将它们用作模型和/或不希望mvc应用程序中的任何EF依赖库引用(假设您的存储库工作在一个单独的项目(我推荐)。如果您正在使用所有视图模型,那么它不是一个问题,但它很好地使用“客户”对象而没有额外的方法。在我看来它更干净。