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
相关产品推荐
相关产品推荐

