如何通过 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 了所需的输出(如果 DeptID
是 null
,则返回所有行)。
但问题是,当我想通过以下 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();
我正在使用 ASP.NET MVC 4 应用程序 Entity Framework。
我想有条件地传递空值,假设如果将值传递给 DeptID
那么它应该只传递 DeptID
的值列表,如果传递 DeptID = NULL
那么它应该所有部门。
我通过检查 DeptID
编写了一个过程,它 returns 了所需的输出(如果 DeptID
是 null
,则返回所有行)。
但问题是,当我想通过以下 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();