ObjectParameter.Value为null值的InvalidCastException

时间:2017-04-24 14:02:51

标签: c# entity-framework

在SQL程序中returs null for out parametr但在C#中如果我试图检查id == null我得到了System.InvalidCastException 这个错误让我疯狂,因为在debuge模式下id == null为TRUE但无论如何System.InvalidCastException是throwen

 var outObj = new System.Data.Entity.Core.Objects.ObjectParameter("ID",typeof(int?));
            db.spGetSOFolderID(soid, branchId, outObj, kindID);
            int? id = null;
            id =(int?)outObj.Value;
  if (id==null) ///here error
            return null;

2 个答案:

答案 0 :(得分:0)

对我来说,问题的根源就是这一行。

  db.spGetSOFolderID(soid, branchId, outObj, kindID);

因为,其余的代码似乎正确地发挥作用。

答案 1 :(得分:0)

FINALY找到了解决方案。

 var outObj = new System.Data.Entity.Core.Objects.ObjectParameter("FolderID", typeof(int?));
            db.spGetSOFolderID(soid, branchId, outObj, kindID);
            if (outObj.Value is DBNull)
                return null;
            int? id = (int?)outObj.Value;

问题确实存在于int? id = (int?)outObj.Value;但是为什么我在if(id==)上获得InvalidCastException erro对我来说仍然是秘密。