ASP.NET Core MVC项目执行迁移后生成2个本地数据库原因咨询
ASP.NET Core执行迁移后生成两个本地数据库的原因
核心触发原因
和两次创建控制器的操作直接相关:
- ASP.NET Core MVC的EF控制器脚手架默认会在生成控制器时,若未指定现有
DbContext,会自动为当前模型生成独立的上下文类、并自动在配置文件中追加对应的数据库连接字符串 - 第一次使用单数命名
ConsumerModelController生成控制器时,哪怕后续操作报错,脚手架已经生成了对应的DbContext和连接字符串配置,此时如果执行过update-database(哪怕部分执行失败),已经生成了第一个数据库 - 后续更换为复数命名
ConsumerModelsController重新生成控制器时,脚手架若再次生成了新的独立DbContext、或者生成了新的连接字符串指向不同的库名,再次执行add-migration和update-database后,就会生成第二个数据库
其他可能诱因
- 第一次操作失败后未清理残留的迁移文件,执行
add-migration时未指定明确的DbContext,EF Core识别到多套迁移配置后,分别生成对应数据库 - 脚手架自动生成的连接字符串默认以
DbContext类名作为数据库名后缀,两次生成的上下文类名不同,会指向完全不同的数据库文件
排查方案
- 检查项目根目录下的
Migrations文件夹,确认是否存在两套不同前缀的迁移文件,分别对应不同的DbContext - 打开
appsettings.json查看ConnectionStrings节点,确认是否存在多个数据库连接配置 - 搜索项目中继承自
DbContext的类,确认是否存在多个上下文实例,以及各自绑定的连接字符串是否一致
内容的提问来源于stack exchange,提问作者user14932840
相关产品推荐
相关产品推荐

