Sql server 如何通过实体框架将空值传递到存储过程中?

Sql server 如何通过实体框架将空值传递到存储过程中?,sql-server,entity-framework,asp.net-mvc-4,entity-framework-4,entity-framework-6,Sql Server,Entity Framework,Asp.net Mvc 4,Entity Framework 4,Entity Framework 6,我正在使用带有实体框架的ASP.NETMVC4应用程序 我想有条件地传递null值,比如说,如果将值传递给DeptID,那么它应该只为传递的DeptID列出值,如果pass DeptID=null,那么它应该传递给所有部门 我通过检查DeptID编写了一个过程,它返回所需的输出。如果DeptID为null,则返回所有行 但问题是,当我想通过实体框架的以下代码传递空值时,它不起作用 IdleTicketsChecker.Data.Test11Entities objModel = new Data

我正在使用带有实体框架的ASP.NETMVC4应用程序

我想有条件地传递null值,比如说,如果将值传递给DeptID,那么它应该只为传递的DeptID列出值,如果pass 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();
知道为什么会这样吗?

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