修改SQL Server数据库后,Entity Data Model Wizard不显示新表怎么办?
解决Entity Framework逆向工程不识别数据库变更的问题
1. 确认连接字符串指向正确的数据库
在Entity Data Model Wizard的连接步骤中,不要直接使用已填充的旧连接字符串,点击New Connection,重新选择SQL Server实例和目标数据库,确保选中的是你修改后的最新数据库。保存新的连接字符串时选择覆盖配置文件中的旧连接。
2. 清理项目与缓存
- 右键项目选择清理,再执行重新生成,清除旧的编译文件。
- 删除项目根目录下的
bin和obj文件夹,彻底移除旧的生成文件。 - 关闭Visual Studio 2019,删除以下路径的缓存文件:
%LocalAppData%\Microsoft\VisualStudio\16.0_<你的VS标识>\ComponentModelCache%LocalAppData%\Temp中所有VS相关的临时文件
3. 在向导中刷新数据库对象
进入Choose Objects and Settings窗口后,找到窗口上方的Refresh按钮(通常在对象列表的工具栏),点击刷新数据库元数据,此时应该能看到新增的表和存储过程,已删除的对象也会被移除。
4. 使用Package Manager Console命令重新生成(更可靠)
如果向导依然失效,直接用EF的逆向工程命令行工具:
- 打开工具 > NuGet包管理器 > 包管理器控制台
- 执行以下命令(替换为你的服务器和数据库信息):
Scaffold-DbContext "Server=你的服务器名;Database=你的数据库名;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -Force -OutputDir Models
-Force参数会强制覆盖旧的实体类和DbContext文件-OutputDir Models指定生成文件的存放目录(可根据你的项目结构调整)
5. 验证数据库变更是否生效
先用SQL Server Management Studio连接目标数据库,确认新增的表、存储过程已存在,已删除的表确实不存在,排除数据库本身未修改成功的问题。
内容的提问来源于stack exchange,提问作者ramix99
相关产品推荐
相关产品推荐

