You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core API项目datetime2数据类型找不到问题求助

问题

错误截图

在NuGet控制台执行update-database命令时出现datetime2错误,迁移文件中Doj字段的类型为DateTime。已删除迁移文件,通过add-migration init重新生成后再执行update-database,问题依旧:数据库已创建但未生成表,连接字符串可用。

解决方案
  • 检查实体类字段赋值与可空性:SQL Server的DateTime类型范围是1753-01-01至9999-12-31,若实体中Doj字段非空但未赋值,默认的DateTime.MinValue(0001-01-01)会超出范围触发错误。要么给字段设置默认值(如public DateTime Doj { get; set; } = DateTime.Now;),要么改为可空类型public DateTime? Doj { get; set; },之后重新生成迁移并执行update-database。
  • 配置EF映射为datetime2类型:在DbContext的OnModelCreating方法中指定字段类型:
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<你的实体类>()
            .Property(e => e.Doj)
            .HasColumnType("datetime2");
    }
    
    执行add-migration FixDateTimeType生成新迁移,再运行update-database。
  • 清理迁移历史记录:打开目标数据库,删除__EFMigrationsHistory表中的所有记录,重新执行add-migration init和update-database。
  • 确认连接字符串指向:再次核对连接字符串中的数据库名称,确保操作的是目标数据库而非其他已存在的库。

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:35:19