1

我正在使用實體框架的ASP.NET MVC 4應用程序。如何通過實體框架將空值傳遞到存儲過程?

我希望有條件地傳遞null值,讓我們說,如果通過值到DeptID那麼就應該列出唯一通過DeptID值,如果通過DeptID = NULL那麼它應該是所有部門。

我寫了一個程序,通過檢查DeptID並返回所需的輸出(如果DeptIDnull,則返回所有行)。

但問題是,當我想通過實體框架的以下代碼傳遞空值它不工作。

IdleTicketsChecker.Data.Test11Entities objModel = new Data.Test11Entities(); 
List<GeResult_Result> objTicketList =ExecuteCustomStoredProc<GetIdleTicketsByMinutes_Result>("GeResult", " @DeptID", 
new SqlParameter("DeptID", DeptID)).ToList(); 

任何想法爲什麼這樣?

回答

1

如果DeptID爲NULL,則你需要傳遞DBNull.Value到您SqlParameter

試試這個:

IdleTicketsChecker.Data.Test11Entities objModel = new Data.Test11Entities(); 

// I'm *assuming* that DeptID is defined as an "int" - if not, adapt as needed 
SqlParameter paramDeptId = new SqlParameter("DeptID", SqlDbType.Int); 

if (DeptID == null) 
    paramDeptId.Value = DBType.Null; 
else 
    paramDeptId.Value = DeptID; 

List<GeResult_Result> objTicketList = ExecuteCustomStoredProc<GetIdleTicketsByMinutes_Result>("GeResult", "@DeptID", paramDeptId).ToList();