ASP.NET Core多项目CodeFirst迁移与数据库更新问题
解决EF Core多项目迁移目标不匹配问题
方法一:用Visual Studio包管理器控制台操作
- 打开Visual Studio,依次点击工具 > NuGet包管理器 > 包管理器控制台
- 在控制台顶部的「默认项目」下拉框里,选中
AccessService项目(存放DbContext和迁移文件的项目) - 执行迁移命令:
- 生成新迁移(命名要体现修改内容):
Add-Migration AddStudentGradeAndClassRoom - 将迁移同步到数据库:
Update-Database
- 生成新迁移(命名要体现修改内容):
方法二:用dotnet CLI命令行操作
- 打开终端(命令提示符、PowerShell或任意终端工具),切换到
AccessService项目的根目录(包含AccessService.csproj文件的文件夹) - 执行以下命令:
- 生成新迁移:
dotnet ef migrations add AddStudentGradeAndClassRoom --startup-project ../ProjectPortal - 更新数据库:
dotnet ef database update --startup-project ../ProjectPortal
注:--startup-project用来指定启动项目(此处为ProjectPortal),若AccessService项目本身能读取正确的连接字符串,可省略该参数直接执行命令。
- 生成新迁移:
可选:修改DbContext配置指定迁移程序集(非必要不推荐)
如果需要让迁移程序集和启动项目保持一致,可在AccessService项目的DbContext类中修改配置:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer( "你的数据库连接字符串", builder => builder.MigrationsAssembly("ProjectPortal") ); }
这种方式会把迁移文件生成到ProjectPortal项目中,不符合原本的项目结构规划,仅作为备选方案。
内容的提问来源于stack exchange,提问作者Rojhat
相关产品推荐
相关产品推荐

