2015-07-03 90 views
3

我正在使用mvc應用程序與entityframework。我想將空值參數傳遞給存儲過程。我想將MerchantID作爲空值傳遞,也有時候MerchantID具有價值。如何通過實體框架將空值傳遞給存儲過程?

GetValues(int[] TicketID,int? MerchantID,bool IsOpen) 
{ 

//TicketID has values 1123,1122 etc 
//MerchantID sometimes null 
//IsOpen true/false 

    DataTable tbldepartmentid = new DataTable("Departmentid"); 
      tbldepartmentid.Columns.Add("VALUE", typeof(int)); 
      foreach (var id in TicketID) 
       tbldepartmentid.Rows.Add(id); 



List<GetTroubleTicketDetails_Result> GetTroubleTicketDetails = _getTroubleTicketDetails_Result.ExecuteCustomStoredProc("Tickets.GetDetails", " @GroupID,@MerchantID,@Open", 
       new SqlParameter("GroupID", SqlDbType.Structured) { Value = tbldepartmentid, TypeName = "dbo.tblTVPForCSVINT" } 
       , new SqlParameter("MerchantID", MerchantID) 
       , new SqlParameter("Open", IsOpen)).ToList(); 
       return GetTroubleTicketDetails; 

}

我的問題是,當我通過MERCHANTID = null,則它給了我下面的錯誤

「參數化查詢「(@GroupID [DBO]。[tblTVPForCSVINT] READONLY ,@ MerchantID nvarchar('期望參數'@MerchantID', 未提供。「

如何爲p MerchantID的屁零值?

回答

8

你需要傳遞SqlInt32.Null而不是null如下:

new SqlParameter("MerchantID", MerchantID ?? SqlInt32.Null) 
+0

感謝,上述解決方案的工作。 – skiskd

+0

記得upvote和接受:) –

+1

謝謝,上面的解決方案是working.but在編譯時顯示轉換錯誤,如果我設置DBNull.Value它工作正常。所以要用?三元運算符。 – skiskd

相關問題