我继承了一个非常大的应用程序,它真的可以使用一些清理工具。整个应用程序中都有数据访问代码。在代码隐藏中,一些在业务逻辑类中,一些内联在经典的asp页面中。
我想要做的是重构此代码,将所有数据访问代码删除到几个DAL类中。
所有数据访问都是通过存储过程(Microsoft SQL 2000)完成的。其中有300-400个。
似乎应该有一种自动分析存储过程的方法,并为每个过程自动生成c#方法,将Method参数映射到存储过程参数,并返回一个数据表。
我对ORM产品没有任何经验,而且我不确定我正在寻找的是一个完整的ORM,或者只是第三方实用程序,它将帮助生成围绕sp调用的简单包装器。
答案 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及更高版本中)会生成包装函数
但是如果你有很多事情要做,你可能最好不要使用或编写一个简单的代码生成器
这两个选项:
后者可以通过数据集设计界面维护,但生成正确(第一次)可能很棘手
答案 4 :(得分:0)
与Robert的建议相似,我们编写了自己的Code Smith版本。
我们的“代码生成器”包含两部分:SQL&类。
SQL: 将生成更新,选择&删除存储的过程。
C#: 将生成类并将文件另存为.cs
我们致电: sp_MShelpcolumns' tablename '获取字段和数据类型的列表,然后进行替换。
它不是一个完美的解决方案,但是对于完成前80%的完成非常有效
答案 5 :(得分:0)
不确定,但似乎这正是你所要求的。