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

本文关键字:存储 存储过程 过程中 值传 null 何使用 实体 框架 | 更新日期: 2023-09-27 18:00:57

我有一个使用实体框架的MVC应用程序。我想将一个具有null值的参数传递给存储过程。在某些情况下,我想将MerchantID作为null传递。

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',没有提供">

如何传递MerchantID的空值?

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

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

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