【问题标题】:Cannot add migration in .NET Core using CLI无法使用 CLI 在 .NET Core 中添加迁移
【发布时间】:2021-03-11 12:56:23
【问题描述】:

我有在 .NET MVC 中使用 EF 迁移的经验,但在切换到 .NET Core 和 CLI 后,现在我无法使用 CLI 应用迁移。以下是我使用的命令,但我不确定应该在哪个项目中打开 CLI。

假设我在解决方案目录上打开 CLI 并且有 2 个项目;域项目包含实体,基础设施项目包含迁移文件夹:

添加迁移

dotnet ef migrations add AddDateOfBirthField --project src\Domain 
--context ApplicationDbContext --output-dir src\Infrastructure\Migrations

抛出以下错误:

启动项目“Domain.csproj”以框架“.NETStandard”为目标。没有与此框架相关联的运行时,并且针对它的项目无法直接执行。要在此项目中使用 Entity Framework Core .NET 命令行工具,请添加一个以 .NET Core 或 .NET Framework 为目标并引用此项目的可执行项目,并使用 --startup-project 将其设置为启动项目;或者,将此项目更新为跨目标 .NET Core 或 .NET Framework。有关在 .NET Standard 项目中使用实体框架工具的更多信息,请参阅https://go.microsoft.com/fwlink/?linkid=2034781

所以,我应该从 CLI 的另一个目录执行命令还是使用额外的标志,例如--startup-project?

【问题讨论】:

  • 其他人没有Entity Framework Core的经验吗?
  • --project src\Domain 类型不是 .Net Core 或 .Net 框架。这就是您收到此错误的原因。
  • 这应该会有所帮助 - rajbos.github.io/blog/2020/04/23/…
  • @Berkay 谢谢朋友。我应该如何运行该命令?您能否根据给定的信息发布它(域项目包含实体,基础设施项目包含迁移文件夹:
  • @Yogi 完美!非常感谢 amigo,它似乎正在工作。

标签: c# entity-framework asp.net-core .net-core entity-framework-core


【解决方案1】:

在 .NET Standard 库中使用 Entity Framework Core 工具时会遇到此问题:EF Core 工具不支持 .NET Standard 框架:它们只能针对 .NET Core 或 .NET Classic(完整框架)。要解决此问题,您需要创建一个依赖于 .NET 标准库的虚拟项目。您可以在herehere 找到更多详细信息。

【讨论】:

  • 对我来说,我唯一应该做的就是添加 --project--startup-project 标志。
  • 我应该使用 --output-dir 标志来点迁移文件夹吗?
  • @zertuc 这将是放置实体类文件的目录。所以如果你想改变目录你可以指定这个标志,否则跳过这个。
  • 但是虽然dbContextentity class 文件位于不同的项目中,EF Core 又如何推断它呢?因为--project 标志仅指向保留dbContext 和迁移的项目。有什么想法吗?
  • @zertuc 是的,EF 将根据参考文献推断它。这是 EF Core CLI 命令的链接,以获取完整的详细信息。 docs.microsoft.com/en-us/ef/core/cli/dotnet
猜你喜欢
  • 2018-09-06
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
相关资源
最近更新 更多