2008-11-14 69 views
6

我已經繼承了一個相當大的應用程序,它真的可以使用一些清理。整個應用程序都存在數據訪問代碼。在代碼背後,一些業務邏輯類,一些內聯在經典的asp頁面。自動創建圍繞存儲過程的C#包裝類

我想要做的是重構此代碼,將所有數據訪問代碼移除到幾個DAL類中。

所有的數據訪問都是通過存儲過程完成的(Microsoft SQL 2000)。有300-400人。

好像有應該以分析存儲過程以自動的方式,並自動生成用於它們中的每C#方法中,所述方法參數映射到存儲過程的參數,與返回的一個數據表的方法。

我對ORM產品沒有任何經驗,我不確定我要找的是一個完整的ORM,還是隻是一個第三方實用程序,它可以幫助生成sp調用的簡單包裝。

回答

2

如果你有機會獲得的.NET Framework 3.5和LINQ to SQL,你可以做到這一點很容易,看看這個視頻:

LINQ to SQL: Using Stored Procedures

使用現有的存儲過程和函數 很容易用LINQ。我們只需 將存儲過程拖到 O/R映射表面上,並從 中調用它們生成的數據上下文對象。

2

我建議您持有Code Smith。該產品包含一個ORM模板,並完全支持從DB模式生成類(我認爲Procs)。然後你可以編碼你需要的所有物體。

另一種選擇是使用LINQ to SQL。

0

拖放存儲過程到數據集設計界面(在.NET 2.0和更高版本)生成一個包裝功能部件

但如果你有很多人做,你可能會使用或寫會更好一個簡單的代碼生成

兩個選項:

  1. 生成自己的包裝代碼C#類/方法
  2. 產生dataset.xsd文件,然後在Visual Studio中打開它並讓設計師產生的類/方法你

後者可以通過數據集設計圖面保持不變,但可能很難得到正確的(第一次)產生

1

我的方法是首先考慮更高級別 - 創建數據訪問類和方法是滿足現有或新代碼庫需求的最佳方式。然後,使用現有的過程調用您的新對象。

我不認爲你應該考慮任何形式的大規模自動化這項任務。

0

與Robert的建議類似,我們已經編寫了我們自己的Code Smith版本。

我們的「代碼生成器」分爲兩部分:SQL &類。

SQL: 將生成更新,選擇&刪除存儲的過程。

C#: 將生成類和文件另存爲的.cs

我們呼籲: sp_MShelpcolumns「表名」,以獲得字段和數據類型的列表,然後做一個替代。

它不是一個完美的解決方案,但對於獲得前80%非常有效的完成