如何通过 Entity Framework 将空值传递给存储过程?

How to pass null values into stored procedure via Entity Framework?

我正在使用 ASP.NET MVC 4 应用程序 Entity Framework。

我想有条件地传递空值,假设如果将值传递给 DeptID 那么它应该只传递 DeptID 的值列表,如果传递 DeptID = NULL 那么它应该所有部门。

我通过检查 DeptID 编写了一个过程,它 returns 了所需的输出(如果 DeptIDnull,则返回所有行)。

但问题是,当我想通过以下 Entity Framework 代码传递空值时,它不起作用。

IdleTicketsChecker.Data.Test11Entities objModel = new Data.Test11Entities();
List<GeResult_Result> objTicketList =ExecuteCustomStoredProc<GetIdleTicketsByMinutes_Result>("GeResult", " @DeptID",
new SqlParameter("DeptID", DeptID)).ToList();

知道为什么会这样吗?

如果 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();