.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与其它略有不同,根据提示情况再自行排查解决吧。
作者:郑州 - 在路上
微信公众号:“专卓”;因为专业,所以卓越!可扫描左侧二维码关注。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)