当迁移在另一个项目中使用 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 时,我应该如何添加新的迁移?的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个页面上显示节点/添加/某种形式?

尝试将 vue-cli 项目迁移到打字稿时出错 [关闭]

如何在另一个项目中使用一个项目中的类

尝试使用 sequelize 创建迁移时出错

为CLI实体框架迁移的DbContext建立连接字符串时出现问题。

如何通过 eb cli (django postgres) 迁移 AWS RDS 数据库?