将 datetime2 数据类型转换为日期时间数据类型错误,首先使用 EF 代码

本文关键字:代码 EF 错误 数据类型 数据 datetime2 类型转换 时间 日期 | 更新日期: 2023-09-27 18:34:10

我首先将EF代码与 asp.net mvc应用程序一起使用。这是我的代码:

Request.RequestDate = DateTime.Now;

请求日期的类型是我的数据库中的日期时间。这是我使用上述代码时发生的错误!

将 datetime2 数据类型转换为日期时间数据类型会导致值超出范围。

请帮帮我。谢谢。

将 datetime2 数据类型转换为日期时间数据类型错误,首先使用 EF 代码

编辑:

如何使用 DbContext 和 SetInitializer 修复 datetime2 超出范围的转换错误?

问题是您正在尝试保存无法容纳在 SQL 日期时间列中的值。 这里给出的答案将阻止转换失败。

或在数据库中将列更改为 datetime2 类型。我不完全知道为什么他们首先编码是生成日期时间列而不是日期时间2

下面是一个在 SQL 中将日期时间列显式映射到 datetime2 的示例

在代码优先实体框架和 SQL Server 中使用日期时间属性

就我而言,这是因为日期时间不可为空,并且在某些情况下,该字段未在构造函数中初始化。我通过将我的字段设置为可为空来解决此问题

public DateTime? MyDate { get; set; }

另一种解决方案是无论如何初始化构造函数中的字段。

    --in your sql script:
        create table tablename(mydate DateTime not null default GETDATE())

        //in your c# object:
        public class tablename
        {
          public string mydate {get; set; } = null;
        }
        //in your C# method using EF:
        private async Task mymethod()
        {
            DateTime myDateTime = DateTime.Now;
            string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
            dbContext.tablename.add(new tablenam{mydate = sqlFormattedDate });
            await dbContext.SaveChangesAsync();
        }