我注意到,當實體框架生成一個存儲過程(函數導入)的方法,它測試,看看參數爲空,並使得這樣的決定:實體框架和存儲過程,函數導入可空參數
if (contactID.HasValue)
{
contactIDParameter = new ObjectParameter("contactID", contactID);
}
else
{
contactIDParameter = new ObjectParameter("contactID", typeof(global::System.Int32));
}
我不明白它試圖做的是通過傳遞參數的類型作爲參數,當參數爲空?在這種情況下,存儲過程/函數究竟是如何執行的?
我用SQL Profiler自己做了一個測試,並注意到當我故意傳遞null作爲參數時(通過調用類似context.MyProcedure(null)的方法),僅僅將null作爲參數傳遞給SQL服務器的存儲過程。
有關此行爲的一些澄清將不勝感激。
非常感謝您對水晶般清晰的解釋! – user683202 2011-04-18 00:22:43