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

Posted

技术标签:

【中文标题】使用 ADO.NET 为 MVC 3 应用程序设计 DAL 的最佳方法?【英文标题】:Best approach to designing DAL with ADO.NET for MVC 3 application? 【发布时间】:2013-05-19 08:25:17 【问题描述】:

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

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

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

【问题讨论】:

使用存储过程是我们的组织规定的,我们必须使用它们。需要一个想法来组织存储过程的 DAL。 向您的经理展示这个问题。强制使用存储过程是一种非常过时的策略。 你不能再创建一个抽象层来创建一个使用 ADO.NET 的实现吗? 【参考方案1】:

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

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

最大的两个原因是:

控制业务逻辑

将所有业务逻辑集中在一个位置可以更轻松地阅读代码,从而更轻松地维护应用程序。即,您在编程时会获得更好的流程。

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

更容易测试

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

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

孤立地测试存储过程很困难。


误区:存储过程比 SQL 查询更快。

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

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

结论

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

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

【讨论】:

以上是关于使用 ADO.NET 为 MVC 3 应用程序设计 DAL 的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

将 DbDataReader 的结果转换为 ASP.NET MVC 4 中的数据库模型,来自使用 ADO.NET 的存储过程 [重复]

如何在带有 ADO.NET 的 ASP.NET Core MVC 中使用 jQuery Ajax 自动完成

ASP.NET MVC 项目中 ADO.NET 实体模型的已打开 DataReader

C# MVC开发中在使用ADO.NET数据模型时出现的问题

如何在 ASP.NET Core MVC 中使用 ADO.NET 向存储过程添加参数?

OOPS 和 ADO.Net