我在EntityFramework中使用MVC应用程序。我想把空值参数传递给存储过程。我想把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]
只读,@merchantid nvarchar('需要参数'@merchantid',
但没有提供。”
如何为merchantid传递空值?

最佳答案

您需要通过SqlInt32.Null而不是null如下:

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

08-25 23:57