我正在构建一个MVC3应用程序,试图使用IoC和构造函数注入。我的数据库(目前为止)大约有50个表。我使用EF4(w/POCO T4模板)作为我的DAC代码。我正在使用存储库模式,每个表都有自己的存储库。我的服务层中的服务类被注入到这些存储库中。为服务层设计DI(构造函数注入)库
问题:我的服务类越来越多,他们需要的存储库。在某些情况下,我正在接近10个储存库,并开始闻起来。
是否有一种常见的方法来设计存储库和服务类,使服务不需要这么多的存储库?
这里有我的想法,我只是不知道哪一个是正确的:
1)这是一个迹象,我应该考虑合并/编组我的仓库到表中的相关部分,减少的数量或依赖库每服务类别。但是,这种方法的问题在于它会使我的存储库膨胀并使其复杂化,并使我无法为所有存储库(数据检索/更新的标准方法)使用通用接口。
2)这是一个标志,我应该考虑根据我的存储库(表格)将我的服务分成组。问题在于我的一些服务方法共享通用实现,并且在类之间打破这些方法可能会使我的依赖关系复杂化。
3)这是一个迹象,我不知道我在做什么,并有一些根本错误,我甚至无法看到。
UPDATE:对于我如何实现EF4和资料库的想法,请在CodePlex上this sample app(我用version 1)。然而,看看那里(和这里)的一些评论,看起来像我需要做更多的阅读,以确保这是我想要采取的路线 - 听起来可能不是。
EF4或4.1?存储库模式和工作单元在4.1中的'DbContext'模板的上下文中构建(也许,可以对模板进行单线调整...) –
EF4(不是4.1)。我应该考虑转向4.1吗?迁移有多难? –
您需要抛弃旧的模板/模型代码生成,并生成一个新模板,但类名相同。只需点击几下即可。你的上下文(也可能是数据集)上的一些基本方法将会中断,这取决于你使用多少种方法来影响它们的影响程度。我相信这些将主要是文本上的变化,而不是交换出很多逻辑。 –