【问题标题】:Pass null datetime using EF model-first使用 EF 模型优先传递空日期时间
【发布时间】:2018-08-26 04:48:52
【问题描述】:

我在我的应用程序中使用 EF 模型优先并且也使用存储过程。

我的表有一个LastStatus 列名称为datetime 数据类型,它可以为空。

当用户填写一个datetime值时,就可以正常工作了。

这是我的代码:

  (@StartAcceptDate IS NULL OR LastStatusDate >= @StartAcceptDate)
  AND  (@EndAcceptDate IS NULL OR LastStatusDate >= @EndAcceptDate)

但是当用户想要选择所有记录发布日期时。

许多记录都有null 值。

我的问题在这里:如何将 null 作为 datetime 从 C# 传递到 SQL Server?

【问题讨论】:

  • C# 中的日期时间是一个不为空的类型。如果您不提供它的值,它将获得一个默认值。

标签: c# sql-server entity-framework stored-procedures ef-model-first


【解决方案1】:

您可以像这样将DateTime 声明为可为空:

DateTime? StartAcceptDate;
DateTime? EndAcceptDate;

这样您就可以将null 的值分配给变量并将它们以这种方式发送到数据库。

【讨论】:

    【解决方案2】:

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

    CREATE PROCEDURE dbo.Proc 
        (@param1 INT = NULL, 
         @param2 INT = NULL ....)
    

    如果您仍想将 C# 代码中的 NULL 发送到存储过程,可以使用 DBNull.Value

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 2011-08-13
      • 1970-01-01
      • 2020-03-05
      • 2012-08-25
      • 2011-08-03
      • 1970-01-01
      相关资源
      最近更新 更多