2010-10-07 68 views
3

我有SQL Server存储过程有几个输入。我想从手动创建C#ADO.NET的SqlParameter数组作为从存储过程输入中创建ADO.NET SqlParemeter数组的代码生成器?

sqlParameter[] sqlParameters = 
       { new SqlParameter("customerID", SqlDbType.Int, 4, ParameterDirection.Input, false, 0, 0, string.Empty, DataRowVersion.Default, custID) ....... 

任何代码生成器,可这和模板,可以这样做节省时间?如果您提到代码生成器,请提及哪个模板。像哪一个为CodeSmith

+0

你真的需要那种格式吗?或者任何格式都可以做到?如果有任何格式可以,那么你可以使用netTiers – Raymund 2010-10-07 22:57:24

+1

它必须产生这些的任何理由?你可以使用Entity Framework调用存储过程吗? – 2010-10-07 22:58:06

+0

是的格式。我坚持这是因为它的工作标准。 – 2010-10-07 23:56:38

回答

0

如果您没有大量存储过程,则可以在Visual Studio中编写宏以生成代码(例如,请参阅this)。实际上,取决于你编写宏的方式,它也可以处理大量的宏。

如果您不需要手动制作DAL,那么您可能应该考虑使用ORM(实体框架,LINQ to SQL ..等),它将为您生成代码。

+0

我需要一些可以直接使用的东西,或者需要很少的返工。什么宏可以去存储过程并创建这样的语句?似乎编写c#代码来做到这一点更容易。另一个ORM不是一个选项。我在我的评论中特别提到了这一点。 – 2010-10-08 16:05:46

+0

对不起。这是因为我工作的方式(我手工编写所有sprocs并将它们保存在一个文本文件中,后者用于生成相关的DAL方法)。但是,这当然对每个人都不方便。 – 2010-10-16 05:50:04

0

创建使用添加新项的数据集。然后,从服务器资源管理器中,将存储过程拖到设计图面上。

这将创建一个几件事情:

  1. 一个DataSet,你可以忽略
  2. 名为 “QueriesTableAdapter” A表适配器。它将包含
  3. 受保护的命令数组,其中包含完整的参数列表
  4. 具有存储过程名称并具有适当参数并通过命令数组元素调用存储过程的方法。

现在,由于命令集合受到保护,您必须做更多的工作。在设计界面上,按F7(查看代码)。这将创建一个DataSet1.cs文件。删除的内容,并添加以下内容:

using System.Data.SqlClient; 

namespace WebApplication.Data.DataSet1TableAdapters 
{ 
    public partial class QueriesTableAdapter 
    { 
     public SqlCommand aspnet_Membership_CreateUser_Command 
     { 
      get { return (SqlCommand) CommandCollection[0]; } 
     } 
    } 
} 

(我有一个Web应用程序开放的,它是使用标准的ASP.NET数据库,所以这是本例中的存储过程)

这将使您的代码访问QueriesTableAdapter.aspnet_Membership_CreateUser_Command.Parameters

0

看看我的SqlSharpener project。它可以在您的SSDT项目中解析SQL文件设计时间,然后您可以调用包含的T4模板为您的所有存储过程创建C#包装,或者如果需要,可以构建自己的T4模板。