目前我正在将一个项目从MVC 2更新到MVC 4,我将要将自定义ORM /数据访问“层”与EF 4.3.1交换(当它出局时升级到5)并且我目前正在理解大多数控制器使用来自另一个文件的函数,这些函数是数据库查询和存储过程的包装器。
所以,我的问题是:我应该用包装函数删除这个文件并直接使用EF从控制器中获取数据,还是应该删除每个函数的内容并用EF代码替换它?
您可以给我任何其他设计提示吗?
谢谢!
答案 0 :(得分:2)
使用存储库模式(正是您正在做的事情)可以让您在将来更加灵活,因为您可以使用NHibernate或连接到MySql的代码替换该单个文件。这样你的代码就不会与EF紧密结合,你可以根据需要更轻松地远离它。
话虽如此,显然存在一些与存储库模式相关的编码开销,如果您不关心将代码与EF紧密耦合,那么您当然可以采用后一种方式。
答案 1 :(得分:1)
我认为这只是选择的问题,两者似乎都适用于某些情况。也就是说,我认为对于使用简化数据库访问的类的大型项目,提供通用功能,并且可以在需要时更容易地交换包装其他数据提供者(如Hibernate)的类。
另外,您可能会添加其他数据提供程序(例如,使用其他站点的API),如果您还将这些数据提供程序直接包含在控制器中,则会产生非常难以阅读的代码。
这种方法还可以显着简化您的控制器,这一开始可能看起来不是什么大问题,但随着更多具有显着功能的控制器将被添加,增值将变得清晰。