В SQL процедура возвращает значение null для параметра out, но в C #, если когда я пытаюсь проверить, есть ли id == null, я получил System.InvalidCastException.

 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;
0
DespeiL 24 Апр 2017 в 17:02

2 ответа

Лучший ответ

НАКОНЕЦ найденное решение.

 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;, но почему я получил ошибку InvalidCastException в if(id==), для меня все еще секрет.

0
DespeiL 24 Апр 2017 в 14:18

Для меня источником проблемы является эта линия.

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

Потому что остальная часть кода, кажется, работает правильно.

0
Coskun Ozogul 24 Апр 2017 в 14:11