Stored procedures 在ASP.NET中使用存储过程的更好方法?

Stored procedures 在ASP.NET中使用存储过程的更好方法?,stored-procedures,orm,ado.net,code-generation,Stored Procedures,Orm,Ado.net,Code Generation,我目前受雇于一家小型ASP.NET/MS-SQL商店。我的团队已经注意到,我们的开发(和错误修复)时间中有很大一部分是花在ADO.NET数据库访问代码上的。我们正在寻找一种软件解决方案,可以简化将DataTable/SQLDataReader结果映射到适当业务对象的过程。手动指定列名并强制转换结果正在成为一场噩梦(特别是当涉及架构更改时) 到目前为止,实体框架(在较小程度上,是LINQ到SQL)是我们发现的唯一一款能够很好地自动化这个过程的软件。我们只需将存储过程添加到模型中,让它们返回自动生成

我目前受雇于一家小型ASP.NET/MS-SQL商店。我的团队已经注意到,我们的开发(和错误修复)时间中有很大一部分是花在ADO.NET数据库访问代码上的。我们正在寻找一种软件解决方案,可以简化将DataTable/SQLDataReader结果映射到适当业务对象的过程。手动指定列名并强制转换结果正在成为一场噩梦(特别是当涉及架构更改时)

到目前为止,实体框架(在较小程度上,是LINQ到SQL)是我们发现的唯一一款能够很好地自动化这个过程的软件。我们只需将存储过程添加到模型中,让它们返回自动生成的复杂类型。从数据库更新模型的能力也是一大优势

在我们开始将我们的许多项目迁移到EntityFramework之前,我想知道是否还有其他选项需要考虑。我的团队对ORM库或代码生成器没有强烈的偏好

可能有帮助的一些标准:


  • 所有数据访问(包括CRUD)都是通过SQL Server 2008R2上的存储过程执行的请不要回答“停止使用存储过程”。ORM在我们的情况下有着难以置信的意义,但是DBA的决定胜过了编程团队
  • 软件应该有助于解析存储过程参数名称,并将结果转换为我们可以使用的强类型对象
  • 我们是一个预算很少的学术机构。我们今年的预算已经花了很多钱(我们获得了Resharper许可证——谢天谢地,价格降低了),所以价格高昂的商业解决方案已经过时了
  • 我们无法使用GPL库。LGPL/BSD或任何类似的都可以
  • 我们希望为我们的开发人员简化工作。将列/类型信息从C#移动到手动编写的XML并不会让他们的工作变得更轻松。我们正在寻找尽可能自动化的东西

  • 您应该认真查看位于以下位置的Software is Hardwork Library中的类型映射或/M&generator:


    就我个人而言,当我陷入这种情况时,我是一个粉丝。据我所知,它已不再处于开发阶段,但它的继任者也可能是一个不错的选择。

    “ORM在我们的情况下会非常有意义,但我们的DBA的决定胜过编程团队”-这是一个业务决策,还是仅仅是DBA的决定?使用实体框架4(.NET 4)-它非常支持存储过程-适用于任何操作!(大多数其他的ORM甚至都没有开始尝试这样做…)@marc_s:你认为哪些ORM不支持存储过程?我想不出一个重要的问题。事实上,从代码中使用存储过程比从代码中使用动态SQL更具挑战性。我知道这不是你的选择,这是非常不幸的。DBA不应该被允许口述这类内容。如果我站在你的立场上,我会专注于DBA问题,而不是表面上的技术问题。对于DBA来说,阅读存储过程代码比查看SQL Management Studio中运行的查询更容易/更快。。。我们有8个程序员,支持总共约90个小型和25个中型Web应用程序。大多数应用程序的用户群约为10人。我们的SQL是95%的CRUD。只有我们的自定义门户网站使用此数据库。频繁变化的需求导致频繁的数据库模式变化。我们的应用程序都不是数据库密集型的,也不是高安全性的。上面的链接过时了:我把这个项目分成了一个名为TextMetal的代码生成器/文本模板项目。