EF Core数据库优先模式下模型更新需重新执行Scaffold-DbContext命令并加-Force参数覆盖生成;适用于数据库结构变更场景,如增删表、修改字段、调整主外键等,且不可混用Code First迁移。

EF Core数据库优先模式下,模型更新不是靠迁移(Migration),而是重新执行反向工程命令——因为模型是“从数据库来的”,所以数据库变了,就得重新生成模型。
当数据库结构发生变更时,比如:
核心命令不变,关键是加 -Force 参数覆盖旧文件,并确保连接字符串和数据库提供程序准确:
Scaffold-DbContext "Server=.;Database=MyDB;Trusted_Connection=true;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context AppDbContext -Force
说明:
直接覆盖会丢失手工修改,所以务必提前处理:
[NotMapped]),这些会被清掉——建议把这类逻辑移到分部类(partial class)或单独的扩展文件中OnModelCreating 并添加了 Fluent API 配置,-Force 不会覆盖这个方法,但新生成的代码可能删掉原有 modelBuilder.Entity<x>()</x> 块,得手动补回为减少重复操作,可把 Scaffold 命令保存为 PowerShell 脚本或 CLI 别名:
refresh-model.ps1 文件,内容就是上面那条 Scaffold 命令基本上就这些。数据库优先的本质是“模型跟随数据库走”,没有迁移概念,也不该混用 Code First 的 Add-Migration —— 那样反而会让模型和库脱节,引发运行时异常。
以上就是EF Core数据库优先模式怎么更新模型 EF Core更新数据库模型方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号