2010-10-07 54 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模板。