【问题标题】:Ef core migrations in full .net project in VSTSVSTS 中完整 .net 项目中的 Ef 核心迁移
【发布时间】:2017-11-29 01:27:05
【问题描述】:

我创建了一个针对完整 .net 框架的 .net 核心网络应用程序

我已经创建了一个类库(.net 框架) 在这个 dll 中,我引用了 ef core 并创建了一个上下文。 当我使用包管理器时,迁移工作。

我目前面临的问题 我需要能够在 VSTS 部署期间使用迁移。

我试过了 在 VSTS 中创建一个 powershell 部署脚本来调用 dotnet-ef 命令。这不起作用,因为我无法在我的项目中安装 Microsoft.EntityFrameworkCore.Tools.DotNet

我尝试在我的 .csproj 中手动添加引用 Manual update .csproj

但不幸的是,这并不能解决我的问题,只会产生这个结果。 Faulty reference

【问题讨论】:

  • 如果将 ItemGroup 更改为 <ItemGroup> <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" /> <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" /> </ItemGroup> 类似于本文中的设置 docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/… 会怎样?您可以在一个驱动器中上传整个项目吗?
  • @Marina-MSFT 我试图添加建议的更改,但现在我只得到两个文件,如“错误参考”图像所示。我仍然无法从 powershell 使用“dotnet-ef”,并且收到“找不到可执行的匹配命令“dotnet-ef”
  • 上传项目方便吗?或者您可以上传一个具有相同错误消息的演示。

标签: .net entity-framework entity-framework-core entity-framework-migrations azure-pipelines-release-pipeline


【解决方案1】:

免责声明:我没有测试过以下任何建议。

其他人正在使用此解决方法:EF Core (1.0.0) Migrations On Azure App Services

ASP.NET Core 的另一个解决方法是添加一个命令行参数 (Program.cs) 以允许从命令行执行 .Database.Migrate()。然后,您可以使用此命令行参数添加在 azure 上执行 powershell 命令/脚本的 VSTS 部署任务。

另一种方法可能是让您的 CI 将带有 EF Core tools reference 的项目文件 (*.csproj) 放到一个工件中,然后在 CD 中执行 dotnet restore。项目文件似乎是必要的,因为这是我可以看到您可以指示 dotnet 工具恢复什么的唯一方法。

【讨论】:

  • 经过无数小时的搜索,我决定使用 context.Database.Migrate()
【解决方案2】:

我意识到这是一个老问题,但对于正在寻找在 Azure DevOps(又名 VSTS)中处理 EF 迁移的最佳方法的其他人来说,这就是我的发现。

EF 迁移会构建源代码,这可能会产生问题,因为您需要源代码,而发布管道没有构建管道所具有的所有相同功能。

我的做法是:

  1. 使用dotnet ef 命令在构建中生成迁移脚本。
  2. 将脚本发布为构建的工件。
  3. 在发布管道中部署期间运行脚本。

查看完整的博文,了解更多详情 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2020-05-06
    • 2019-06-18
    • 2020-02-15
    • 1970-01-01
    相关资源
    最近更新 更多