使用Subsonic 3.0.0.3將空值傳遞給存儲過程參數是否可行?如果是這樣,什麼是適當的方式?Subsonic 3 - 將空值傳遞給存儲過程參數
詳細
都說我是個SP,其中的一個參數有一個像一個默認值:
CREATE Procedure Test_SPWithNullParams(@p1 int=null, @p2 varchar(50))
AS
SELECT 1 as Stuff
然後在我的代碼我想做這樣的事情:
var db = new Sandbox.DB();
StoredProcedure sproc = db.Test_SPWithNullParams(null , "test");
//alternately --> db.Test_SPWithNullParams("test");
在StoredProcedures.cs中生成的相應函數的方式,但@ p1的參數不可爲空。那麼我的替代品是什麼?我遇到了這篇文章(http://brianmrush.wordpress.com/2010/01/19/subsonic-t4-templates-stored-procedures-nullable-parameters),但它似乎是一個繁瑣的工作,有效地分支代碼庫。
另外我想過手動覆蓋命令對象。例如:
int dummyInt = -1;
StoredProcedure sproc = db.Test_SPWithNullParams(dummyInt , "test");
sproc.Command.Parameters[0].ParameterValue = DBNull.Value;
想法?
對不起,但定義可爲空dummyInt參數防止編譯。 Subsonic寫入「db.Test_SPWithNullParams」,不含可爲空的參數。這意味着我需要做一個(int.hasvalue?int:0)或定義一個不可爲空的參數。既不允許我傳遞一個空值給我的SP。 – EBarr 2010-02-16 16:40:16