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

时间:2013-05-23 20:12:53

标签: asp.net-mvc-3 repository-pattern data-access-layer

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

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

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

1 个答案:

答案 0 :(得分:7)

  

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

由于我们大多数人正在远离存储过程,所以答案很少。

最主要的两个原因是:

控制业务逻辑

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

如果您在SP和.NET代码之间展开业务逻辑,则每次在代码和SP之间切换时都必须进行心理转换(存储状态)。

更容易测试

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

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

单独测试存储过程很难。


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

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

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

结论

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

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