问题描述
我正在设置Azure发布管道,并且需要在发布中执行所有待处理的数据库迁移。
我已经在互联网上搜索了一个多小时,我能找到的全部都是关于dotnet Core的信息,而数据库是.Net Framework上的EF6,而不是dotnet Core的信息(我之前为Core做过几次)。 / p>
我所看到的问题是,EF6使用Visual Studio的内置程序包管理器控制台工作-这在Azure管道中不存在;这是Visual Studio的怪异之处。
我似乎可以用几种方法在头上给这只猫加皮,但是我不知道如何在管道的背景下从这两种猫开始。
选项1:在管道上运行迁移-但是...如何?
选项2:sql脚本-需要运行程序包管理器才能生成它们,以便可以运行它们(如果我可以在管道上执行该操作,那么无论如何我都将运行它,因此必须在本地创建并使用作为解决方案IMO的代码有些落后)
选项3:编写控制台应用-我真的必须这样做吗?
解决方法
您可以尝试Entity Framework Migration Extensions。
此任务允许Build / Release提供数据库连接参数并针对数据库执行Entity Framework 6迁移。
- 将您的项目构建到输出文件夹,并包含Entity Framework 6随附的migration.exe可执行文件。
- 创建一个自动生成的版本,该版本打包您的文件并使它们在发布期间可访问。
- 为相关内部版本创建发布定义
- 添加EF6迁移任务。一旦将该任务添加到发行版中的环境中,您将需要输入适当的参数以对其进行配置。所有文件路径参数都应在用于构建的文件系统内,但都不是用于TFS源代码控制路径。
您也可以选中此article。
,这里的答案是使用ef6.exe命令行工具,并确保它随您的版本一起提供。
在Microsoft更新不存在的文档之前,这可能对这里的任何人都有用:http://github.com/dotnet/EntityFramework.Docs/issues/1740-其中包含一个表格,两者之间具有某种转换矩阵。