我目前在我們的某個項目上使用了dapper,並且始終執行存儲過程。在前面的幾個方法中,當我們執行的存儲過程返回行時,一切正常。執行不返回結果的存儲過程時拋出錯誤
現在我正在面臨一個問題,當我試圖從存儲過程中獲取數據時,它會在找到時返回信息。這是一個非常常見的用例(例如,在應用程序上記錄用戶)。當調用Query
方法,以及存儲過程不返回任何行,短小精悍拋出與消息的ArgumentException
:
「當使用多地圖API確保您設置的splitOn PARAM如果你有比ID參數其他鍵名稱:splitOn」
我正在使用的代碼是:
using (var conn = new SqlConnection(connString))
{
conn.Open();
return conn.Query<Customer>(
sql: "prc_GetCustomer",
param: new { Parameter = p },
commandType: CommandType.StoredProcedure).FirstOrDefault();
}
我知道,那裏是在過程預計將不返回任何行,但它應該使用一個Execute
方法真的不是我的情況。另外,由於我沒有使用多重映射,所以精巧的異常是誤導性的。
任何想法? 謝謝!
是存儲過程返回數據集的行數爲零還是根本沒有返回數據集? – RBarryYoung
當存儲過程完全沒有返回時,我可以重複這個問題。如果它只返回與對象具有相同結構的空結果集,它就可以正常工作。是否有理由不能返回空數據集而不是什麼? –
ElvisLives
現在這個過程沒有任何迴應,我同意這不是一個好的解決方案,但是我們有很多像這樣的遺留存儲過程。我只是想知道,如果短小精悍不能檢查是否沒有字段,只是返回默認(T) – rocco