2012-11-20 22 views
1

我試圖使用大規模微ORM來執行存儲過程。海量:使用存儲過程

var tbl = new DynamicModel("Conn", tableName: "User", primaryKeyField: "UserID"); 
var result = tbl.Query("EXEC User_INSERT @0,@1,@2,@3", "7843bf9d-9cb8-495b-aaa5-785ac74b82a5", "7FBDDG58-B08E-4723-9477-C9E791CDF36E", "Admin", "11/20/2012"); 

在調試時甚至沒有進入Massive庫。我也試着像...

var result = tbl.Query(@"EXEC ...); 

var result = tbl.Query("User_INSERT @0,...); 

一切似乎是工作。使用相同的句柄SELECT查詢工作,但不是存儲過程。如果我在語句中創建一個斷點並在「快速監視」中加載相同的內容並展開動態結果,則會觸發存儲過程。

+0

你怎麼不顯示選擇查詢..? – MethodMan

+0

喜歡的東西變種結果= tbl.Query(「選擇從用戶*」);作品(這是我的意思是當我提到SELECT查詢作品)。所以連接不是問題。但通過傳遞存儲過程的名稱它不起作用。 – Rajul

回答

0

這只是一個粗略的估計,因爲我不明白你的錯誤信息是什麼,需要更多的信息,但你不能將你的GUID作爲一個字符串(除非接受它作爲一個字符串類型?)。也許嘗試

var result = tbl.Query("EXEC User_INSERT @0,@1,@2,@3", 
New Guid("7843bf9d-9cb8-495b-aaa5-785ac74b82a5"), 
New Guid("7FBDDG58- B08E-4723-9477-C9E791CDF36E"), "Admin", "11/20/2012"); 
+0

存儲過程不接受NVARCHAR這是我通過它作爲一個字符串的原因。當我調試上述語句時,它不會執行任何操作。它只是跳到下一條語句而不執行存儲過程。實際上,參數值來自動態對象,如objUser.AddressID,objUser.RegionID,objUser.UserName,objUser.CreateDate。但爲了測試目的,我對查詢中的值進行了硬編碼。我正在使用Massive的最新穩定版本。謝謝。 – Rajul

2

DynamicModel.Query返回一個IEnumerable因此查詢(或存儲過程在這種情況下),直到IEnumerable的需要在你的C#代碼進行評估是從來沒有在SQL執行。

你可以通過簡單地增加.ToList()到您的.Query()調用結束強制的IEnumerable的評價:

var tbl = new DynamicModel("Conn", tableName: "User", primaryKeyField: "UserID"); 
var result = tbl.Query("EXEC User_INSERT @0,@1,@2,@3", "7843bf9d-9cb8-495b-aaa5-785ac74b82a5", "7FBDDG58-B08E-4723-9477-C9E791CDF36E", "Admin", "11/20/2012").ToList();