当迁移在另一个项目中使用 cli 时,我应该如何添加新的迁移?
Posted
技术标签:
【中文标题】当迁移在另一个项目中使用 cli 时,我应该如何添加新的迁移?【英文标题】:How should I add new migrations when the migrations are in another project using cli? 【发布时间】:2019-08-09 16:27:28 【问题描述】:我有以下 3 个项目的解决方案:
-Project.Api(一个包含startup.cs和连接字符串的.net-core项目)
-Project.Service(包含迁移、DbContext 等的 .netstandard 项目)
-Project.Domain(包含实体的 .netstandard 项目)
我在尝试通过运行以下命令从 cli 添加新迁移时收到此错误:
cd Project.Api
dotnet ef migrations add DoSth
您的目标项目“Project.Api”与您的迁移不匹配 程序集'Project.Service'。更改您的目标项目或 更改您的迁移程序集。更改您的迁移程序集 使用 DbContextOptionsBuilder。例如。 options.UseSqlServer(连接,b => b.MigrationsAssembly("Project.Api"))。默认情况下,迁移程序集是包含 DbContext 的程序集。改变 使用 Package 将您的目标项目迁移到迁移项目 Manager Console 的 Default project 下拉列表,或者通过执行 包含迁移项目的目录中的“dotnet ef”。
此外,我没有使用 Visual Studio,我必须使用 cli。
当我将 Startup.cs 中的迁移程序集更改为“Project.Api”时,该命令运行没有错误,但问题是迁移已添加到“Project.Api”下,我不想要这是因为我希望它们在“Project.Service”下。
我也尝试将目标程序集更改为“Project.Service”,但出现此错误:
启动项目“Project.Service.csproj”以框架为目标 '.NET 标准'。没有与此框架关联的运行时, 并且针对它的项目不能直接执行。要使用 带有此项目的 Entity Framework Core .NET 命令行工具,添加 面向 .NET Core 或 .NET Framework 的可执行项目 引用此项目,并将其设置为启动项目使用 --启动项目;或者,将此项目更新为跨目标 .NET Core 或 .NET Framework。有关使用 EF Core 工具的更多信息 对于 .NET Standard 项目,请参阅 https://go.microsoft.com/fwlink/?linkid=2034781
【问题讨论】:
【参考方案1】:我所要做的就是将我的工作目录更改为包含迁移的目录,然后执行命令以添加迁移并指定我的启动项目。
cd Project.Service
dotnet ef migrations add Add_Admin --startup-project ../Project.Api/Project.Api.csproj
【讨论】:
以上是关于当迁移在另一个项目中使用 cli 时,我应该如何添加新的迁移?的主要内容,如果未能解决你的问题,请参考以下文章