如何通过实体框架将空值传递给存储过程?
Posted
技术标签:
【中文标题】如何通过实体框架将空值传递给存储过程?【英文标题】:How to pass null values into stored procedure via Entity Framework? 【发布时间】:2016-01-09 21:22:30 【问题描述】:我正在使用带有实体框架的 ASP.NET MVC 4 应用程序。
我想有条件地传递空值,假设如果将值传递给DeptID
,那么它应该列出仅传递给DeptID
的值,如果传递DeptID = NULL
,那么它应该是所有部门。
我通过检查DeptID
编写了一个过程,它返回所需的输出(如果DeptID
是null
,则返回所有行)。
但问题是当我想通过以下实体框架代码传递空值时,它不起作用。
IdleTicketsChecker.Data.Test11Entities objModel = new Data.Test11Entities();
List<GeResult_Result> objTicketList =ExecuteCustomStoredProc<GetIdleTicketsByMinutes_Result>("GeResult", " @DeptID",
new SqlParameter("DeptID", DeptID)).ToList();
知道为什么会这样吗?
【问题讨论】:
【参考方案1】:如果DeptID
为NULL,那么您需要将DBNull.Value
传递给您的SqlParameter
试试这个:
IdleTicketsChecker.Data.Test11Entities objModel = new Data.Test11Entities();
// I'm *assuming* that DeptID is defined as an "int" - if not, adapt as needed
SqlParameter paramDeptId = new SqlParameter("DeptID", SqlDbType.Int);
if (DeptID == null)
paramDeptId.Value = DBType.Null;
else
paramDeptId.Value = DeptID;
List<GeResult_Result> objTicketList = ExecuteCustomStoredProc<GetIdleTicketsByMinutes_Result>("GeResult", "@DeptID", paramDeptId).ToList();
【讨论】:
以上是关于如何通过实体框架将空值传递给存储过程?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 vb.net 中日期的空值传递给 sql 存储过程?
通过数据库上下文将空 DataTable 传递给 SQL Server 存储过程
将空值传递给 SVG 路径(使用 d3.js)以抑制丢失数据