我注意到当Entity Framework为存储过程(函数导入)生成方法时,它会测试参数是否为null,并做出如下决策:
if (contactID.HasValue)
{
contactIDParameter = new ObjectParameter("contactID", contactID);
}
else
{
contactIDParameter = new ObjectParameter("contactID", typeof(global::System.Int32));
}
当参数为null时,通过将参数的类型作为参数传递,我不明白它试图做什么?在这种情况下,存储过程/函数如何执行?
我用SQL Profiler进行了测试,并注意到当我故意将参数设置为null(通过调用类似context.MyProcedure(null)之类的东西),null只是作为参数传递给SQL服务器的存储过程。
希望对此行为进行一些澄清。