2009-09-13 27 views
1

嗨使用亞音速3.0.0.3它似乎有一些問題與亞音速識別存儲過程參數作爲輸出參數。亞音速3無法識別存儲過程輸出參數

在StoredProcedures.cs類中,我找到了我的存儲過程定義,但最後一個參數被錯誤地定義爲「AddParameter」。

sp.Command.AddParameter("HasPermission",HasPermission,DbType.Boolean); 

當我sp.Execute()和試圖讀取sp.Command.OutputValues [0]的值是空的值。

如果將定義編輯爲這樣;

sp.Command.AddOutputParameter("HasPermission", DbType.Boolean); 

然後值返回,是正確的值類型

我不知道我怎麼「修復」這一點 - 因爲每次我回藍通過「運行自定義工具」參數定義所需的SP類編輯。我應該怎樣編輯T4模板?

請指教。

編輯:我忘了提我使用MS SQL 2008(10.0.2531)

+0

我認爲這應該處理,也許提交問題跟蹤器上的票? http://github.com/subsonic/SubSonic-3.0/issues 這絕對是在T4模板。它可能不正確地檢測輸出參數以生成正確的代碼。 – 2009-09-13 15:46:12

+0

在Github上創建問題; http://github.com/subsonic/SubSonic-3.0/issues#issue/118 – CmdrTallen 2009-09-14 18:40:12

回答

0

與亞音速3.0.0.4這是固定的,但遺憾的是沒有希望。修正可以在此博客條目後完成; http://brianmrush.wordpress.com/2010/01/15/subsonic-and-t4-templates/

基本上把這個添加到SQLServer.ttinclude;

p.ParameterDirection = GetParamDirection(row["PARAMETER_MODE"].ToString()); 

並將此方法廣告到SQLServer.ttinclude;

string GetParamDirection(string paramMode) 
{ 
    switch (paramMode) 
    { 
    case "IN": 
     return "ParameterDirection.Input"; 
    case "INOUT": 
     return "ParameterDirection.InputOutput"; 
     case "OUT": 
     return "ParameterDirection.Output"; 
    case "RETURN": 
     return "ParameterDirection.ReturnValue"; 
    default: 
     return "ParameterDirection.Input"; 
    } 
} 

然後在StoredProcedure.tt文件中修改第21行看起來像這樣;

sp.Command.AddParameter("<#=par.Name#>",<#=par.CleanName#>,DbType.<#=par.DbType#>);