围绕存储过程自动创建C#包装类

时间:2008-11-14 04:09:58

标签: c# sql-server stored-procedures orm

我继承了一个非常大的应用程序,它真的可以使用一些清理工具。整个应用程序中都有数据访问代码。在代码隐藏中,一些在业务逻辑类中,一些内联在经典的asp页面中。

我想要做的是重构此代码,将所有数据访问代码删除到几个DAL类中。

所有数据访问都是通过存储过程(Microsoft SQL 2000)完成的。其中有300-400个。

似乎应该有一种自动分析存储过程的方法,并为每个过程自动生成c#方法,将Method参数映射到存储过程参数,并返回一个数据表。

我对ORM产品没有任何经验,而且我不确定我正在寻找的是一个完整的ORM,或者只是第三方实用程序,它将帮助生成围绕sp调用的简单包装器。

6 个答案:

答案 0 :(得分:3)

如果您可以访问.NET Framework 3.5和Linq to SQL,则可以非常轻松地完成此操作,请查看此视频:

LINQ to SQL: Using Stored Procedures

  

使用现有的存储过程和   LINQ可以轻松实现各种功能。我们很简单   将存储过程拖到   O / R映射表面并从中调用它们   生成的数据上下文对象。

答案 1 :(得分:2)

我建议你抓住Code Smith。该产品包含一个ORM模板,完全支持从DB Schemas生成类(我认为Procs)。然后,你可以代码所有你需要的对象。

另一种选择是使用LINQ to SQL。

答案 2 :(得分:1)

我的方法是首先考虑更高级别 - 以最佳方式创建数据访问类和方法,以满足现有或新代码库的需求。然后,使用现有的过程调用新对象。

我认为您不应该考虑任何形式的大规模自动化来完成这项任务。

答案 3 :(得分:0)

将存储过程拖放到数据集设计图面(在.net 2.0及更高版本中)会生成包装函数

但是如果你有很多事情要做,你可能最好不要使用或编写一个简单的代码生成器

这两个选项:

  1. 自己生成包装代码作为C#classes / methods
  2. 生成一个dataset.xsd文件,然后在visual studio中打开它,让设计师为您生成类/方法
  3. 后者可以通过数据集设计界面维护,但生成正确(第一次)可能很棘手

答案 4 :(得分:0)

与Robert的建议相似,我们编写了自己的Code Smith版本。

我们的“代码生成器”包含两部分:SQL&类。

SQL: 将生成更新,选择&删除存储的过程。

C#: 将生成类并将文件另存为.cs

我们致电: sp_MShelpcolumns' tablename '获取字段和数据类型的列表,然后进行替换。

它不是一个完美的解决方案,但是对于完成前80%的完成非常有效

答案 5 :(得分:0)

不确定,但似乎这正是你所要求的。

http://www.codeproject.com/KB/database/SPGenerator.aspx