我注意到,当实体框架生成一个存储过程(函数导入)的方法,它测试,看看参数为空,并使得这样的决定:实体框架和存储过程,函数导入可空参数
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