2017-04-24 57 views
0

在SQL過程returs爲null out參數,但在C#中如果whene我嘗試檢查id == null我得到System.InvalidCastException 這個錯誤驅使我瘋狂,因爲在debuge模式id = = null是真實的,但無論如何System.InvalidCastException是throwenObjectParameter.Value InvalidCastException爲null值

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

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的埃羅仍然爲我保密。

0

對我來說,問題的根源是這條線。

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

因爲,其餘的代碼似乎正常工作。

+0

功能正常工作在這種情況下輸出參數表爲空 – DespeiL

+0

這種感覺更像是評論而不是回答。 –