.NET8升级.NET9,CodeFirst模式迁移Add-Migration执行Update-DataBase报错

在做netcore开发时,如果net8一直是正常的,只升级了一下框架net9,在使用Entity Framework Core的Code First模式进行迁移时,执行Add-Migration后尝试使用Update-DataBase时出现了如下错误。

1
2
3
4
5
6
7
Unhandled exception. System.InvalidOperationException: An error was generated for warning 'Microsoft.EntityFrameworkCore.Migrations.PendingModelChangesWarning': The model for context 'WasDbContext' has pending changes. Add a new migration before updating the database. This exception can be suppressed or logged by passing event ID 'RelationalEventId.PendingModelChangesWarning' to the 'ConfigureWarnings' method in 'DbContext.OnConfiguring' or 'AddDbContext'.
   at Microsoft.EntityFrameworkCore.Diagnostics.EventDefinition`1.Log[TLoggerCategory](IDiagnosticsLogger`1 logger, TParam arg)
   at Microsoft.EntityFrameworkCore.Diagnostics.RelationalLoggerExtensions.PendingModelChangesWarning(IDiagnosticsLogger`1 diagnostics, Type contextType)
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
   at Npgsql.EntityFrameworkCore.PostgreSQL.Migrations.Internal.NpgsqlMigrator.Migrate(String targetMigration)
   at Microsoft.EntityFrameworkCore.RelationalDatabaseFacadeExtensions.Migrate(DatabaseFacade databaseFacade)
   at Program.<Main>$(String[] args) in /Users/<REDACTED>/Program.cs:line 220

解决方法可参考,根据提示调整OnConfiguring'方法里的内容,调整如下

调整前

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(“数据库链接字符串”);
}

调整后

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.ConfigureWarnings(warnings =>warnings.Log(RelationalEventId.PendingModelChangesWarning));
optionsBuilder.UseSqlServer(“数据库链接字符串”);
}

数据库中如果已经包含数据库了,第一次执行add-migration时,把Up和Down方法里的内容清空,执行update-database,执行前先确保model与数据库表结构完全一致。

protected override void Up(MigrationBuilder migrationBuilder) { }
protected override void Down(MigrationBuilder migrationBuilder) { }

codefirst每次执行会验证上次执行结果,所以先跑一遍空方法,同步一下程序model和数据库结构。后面再开发需要调整表结构时,先修改model再接着add-migration upXXX 执行update-database。

如再遇到其他问题,根据Nuget 命令包net9与其它略有不同,根据提示情况再自行排查解决吧。

posted @   郑州-在路上  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示