如何使用实体框架将空值传递到存储过程?

时间:2015-07-03 07:56:45

标签: c# asp.net-mvc entity-framework

我在实体框架中使用mvc应用程序。我想将null值参数传递给存储过程。我想将MerchantID传递为null,有时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然后它给我以下错误

  

&#34;参数化查询&#39;(@ GroupID [dbo]。[tblTVPForCSVINT]   READONLY,@ MerchantID nvarchar(&#39;期望参数&#39; @ MerchantID&#39;,   没有提供。&#34;

如何为MerchantID传递空值?

1 个答案:

答案 0 :(得分:16)

您需要传递SqlInt32.Null而不是null,如下所示:

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