使用ADO.NET为MVC 3应用程序设计DAL的最佳方法?

Cha*_*aka 3 data-access-layer repository-pattern asp.net-mvc-3

我看到了大量带有实体框架的MVC DAL的例子,但ADO.NET和存储过程没有什么?用于创建DAL的"存储库"模式和"单元工作"似乎有一种趋势,类似于:

http://www.codeproject.com/Articles/207820/The-Repository-Pattern-with-EF-code-first-Dependen

如何将此代码库从EF迁移到ADO.net存储过程?

jga*_*fin 7

如何将此代码库从EF迁移到ADO.net存储过程?

由于我们大多数人正在远离存储过程,因此您得到的答案很少.

最主要的两个原因是:

控制业务逻辑

将所有业务逻辑放在一个位置可以更容易地读取代码,从而维护应用程序.即编程时你获得更好的流量.

如果您在SP和.NET代码之间展开业务逻辑,则必须每次在智能上转换(存储状态)以在代码和SP之间切换.

更容易测试

测试很重要.特别是对于有维护计划的应用.

对于.NET,有几种用于测试代码的工具.所有东西都可以毫不费力地单独测试(没有外部依赖),并且有几篇文章描述了不同的测试技术.

单独测试存储过程很难.


神话:存储过程比SQL查询更快.

今天的存储过程与参数化查询(即使用参数的查询@userName)相比,几年前(SQL Server 2000及更低版本)没有性能提升.它们应该具有相似的性能,因为现在也为参数化查询保存了执行计划.

但是,如果您的SP中有逻辑处理来自多个查询的结果,那么它们会获得更好的性能,因为您的应用程序和数据库服务器之间不需要往返.但是可以通过不同的应用程序架构轻松补偿.

结论

在走这条路之前要三思而行.这通常是不值得的.在较少的CPU周期中获得的(金钱)通常比创建和维护应用程序所花费的时间少得多.

也就是说,存储过程可以按照此处的说明使用:http://msdn.microsoft.com/en-us/data/gg699321.aspx