C# 首先使用EF模型传递空datetime

C# 首先使用EF模型传递空datetime,c#,sql-server,entity-framework,stored-procedures,ef-model-first,C#,Sql Server,Entity Framework,Stored Procedures,Ef Model First,我在应用程序中首先使用EF模型,并使用存储过程 我的表的LastStatus列名为datetime数据类型,并且可以为空 当用户填写日期时间值时,它工作正常 这是我的密码: (@StartAcceptDate IS NULL OR LastStatusDate >= @StartAcceptDate) AND (@EndAcceptDate IS NULL OR LastStatusDate >= @EndAcceptDate) 但当用户想要选择所有记录的发布日期时 许多

我在应用程序中首先使用EF模型,并使用存储过程

我的表的LastStatus列名为datetime数据类型,并且可以为空

当用户填写日期时间值时,它工作正常

这是我的密码:

  (@StartAcceptDate IS NULL OR LastStatusDate >= @StartAcceptDate)
  AND  (@EndAcceptDate IS NULL OR LastStatusDate >= @EndAcceptDate)
但当用户想要选择所有记录的发布日期时

许多记录都有空值


我的问题是:如何将null作为日期时间从C传递给SQL Server?

最好的方法是在存储过程中将默认参数值设置为null,而不必显式地将null传递给存储过程

CREATE PROCEDURE dbo.Proc 
    (@param1 INT = NULL, 
     @param2 INT = NULL ....)
如果仍要将NULL从C代码发送到存储过程,可以使用DBNull.Value

将日期时间声明为可空,如下所示:

DateTime? StartAcceptDate;
DateTime? EndAcceptDate;

通过这种方式,您可以将null值指定给变量,然后将它们发送到数据库。

C中的Datetime是一种不为null的类型。如果您不提供它的值,它将得到一个默认值。