EF Core数据库优先模式:新增表实体及同步数据库变更方法咨询
EF Core Database-First 模式下新增实体及同步数据库变更
一、将新增表(示例:products)添加至现有数据模型
你可以通过Package Manager Console(PMC)或.NET CLI执行脚手架命令,将新增表生成对应的实体类并整合到现有模型中:
使用Package Manager Console(Visual Studio内)
执行以下命令(替换为你的数据库连接字符串):
Scaffold-DbContext "Server=你的服务器名;Database=你的数据库名;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables products -Append
参数说明:
-OutputDir Models:指定实体类生成到项目的Models目录-Tables products:仅生成products表对应的实体类-Append:新增实体文件,不会覆盖现有模型内容(EF Core 5及以上版本支持)
使用.NET CLI
执行以下命令:
dotnet ef dbcontext scaffold "Server=你的服务器名;Database=你的数据库名;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer --output-dir Models --tables products --append
二、同步SSMS中数据库变更至应用
当你通过SSMS修改了数据库结构(比如新增表/列、修改字段类型、删除字段等),可通过以下方式同步到EF Core模型:
1. 全量同步(覆盖所有实体和上下文)
适用于数据库变更较多、需要完全更新整个模型的场景,执行命令时添加强制覆盖参数:
PMC命令:
Scaffold-DbContext "你的连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force
CLI命令:
dotnet ef dbcontext scaffold "你的连接字符串" Microsoft.EntityFrameworkCore.SqlServer --output-dir Models --force
注意:全量同步会覆盖现有实体类和上下文的自定义修改(比如手动添加的注释、数据注解),如果有自定义配置,建议放到单独的
IEntityTypeConfiguration实现类中,或用部分类扩展上下文。
2. 增量同步(仅同步指定变更的对象)
适用于仅需同步部分表变更的场景,结合指定表和追加参数:
PMC命令(示例:同步products表修改+新增orders表):
Scaffold-DbContext "你的连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables products,orders -Append
CLI命令:
dotnet ef dbcontext scaffold "你的连接字符串" Microsoft.EntityFrameworkCore.SqlServer --output-dir Models --tables products,orders --append
前置要求
确保项目已安装以下NuGet包:
Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.Tools(使用PMC时需要)Microsoft.EntityFrameworkCore.Design(使用.NET CLI时需要)
内容的提问来源于stack exchange,提问作者jayasri
相关产品推荐
相关产品推荐

