c# - 如何使用 Entity Framework 将空值传递给存储过程?

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

我有一个使用 Entity Framework 的 MVC 应用程序。我想将具有空值的参数传递给存储过程。在某些情况下,我想将 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 时,出现以下错误:

"The parameterized query '(@GroupID [dbo].[tblTVPForCSVINT] READONLY,@MerchantID nvarchar(' expects the parameter '@MerchantID', which was not supplied."

如何为 MerchantID 传递空值?

最佳答案

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

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

关于c# - 如何使用 Entity Framework 将空值传递给存储过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31201548/

相关文章:

asp.net-mvc - 有没有办法为每个 Controller 方法添加虚拟方法行为? (即记录)

asp.net-mvc - 托管 AngularJS 和图像的问题

c# - EF4 两个模型一个数据库,可能吗?

c# - 您如何急切加载一个实体可能拥有的所有子集合?

c# - LINQ to XML - Where 子句

c# - 使用 Azure 图形 API 获取用户下的用户列表

c# - 在 asp.net web 服务器上安装字体

c# - Task.Delay() 挂起几分钟

jquery - 在 foreach 循环中提交表单并仅使用其数据调用 ajax 函数 mvc 4

c# - Entity Framework 、现有数据库、代码优先 - 忽略数据库列和更改数据类型