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

Asp.net mvc 3 使用ADO.NET为MVC 3应用程序设计DAL的最佳方法?,asp.net-mvc-3,repository-pattern,data-access-layer,Asp.net Mvc 3,Repository Pattern,Data Access Layer,我看到了大量使用实体框架的MVC DAL示例,但没有ADO.NET和存储过程的示例? 创建DAL的“存储库”模式和“UnitofWork”似乎有一种趋势,类似于: 如何将此代码库从EF迁移到ADO.net存储过程 如何将此代码库从EF迁移到ADO.net存储过程 您得到的答案很少,因为我们大多数人正在远离存储过程 最大的两个原因是: 对业务逻辑的控制 将所有业务逻辑放在一个地方可以更容易地阅读代码,从而维护应用程序。i、 在编程时,您可以获得更好的流 如果在SPs和.NET代码之间分散业务逻辑

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

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

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

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

最大的两个原因是:

对业务逻辑的控制 将所有业务逻辑放在一个地方可以更容易地阅读代码,从而维护应用程序。i、 在编程时,您可以获得更好的流

如果在SPs和.NET代码之间分散业务逻辑,则每次在代码和SPs之间切换时,您都必须在思想上进行转换(存储状态)

更容易测试 测试很重要。特别是对于有维护计划的应用程序

对于.NET,有几种用于测试代码的工具。每件事都可以独立测试(无需外部依赖),只需很少的努力,并且有几篇文章描述了不同的测试技术

隔离测试存储过程很困难


谬论:存储过程比SQL查询更快。 如今,存储过程与参数化查询(即使用参数作为
@userName
的查询)相比,性能并没有几年前的表现(SQL Server 2000及以下版本)。事实上,它们的性能应该与现在为参数化查询保存的执行计划类似

但是,如果您的SP:s中有处理多个查询结果的逻辑,那么它们确实可以获得更好的性能,因为应用程序和数据库服务器之间不需要往返。但是,不同的应用程序体系结构可以很容易地弥补这些不足

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


也就是说,可以按照此处的说明使用存储过程:

使用存储过程是由我们的组织决定的,我们必须使用它们。需要一个想法来组织存储过程的DAL。向经理展示这个问题。强制使用存储过程是一种非常过时的策略。您能否再创建一个抽象层来创建一个使用ADO.NET的实现。