无法使用migrate.exe运行代码首次迁移

the*_*age 15 c# entity-framework code-first

我正在尝试更新测试系统上的数据库.当我update-database在visual studio中运行时,事情按预期工作.

当我部署然后尝试在测试机器上运行时:

Migrate.exe CodeFirst.dll /startupConfigurationFile="..\web.config"
Run Code Online (Sandbox Code Playgroud)

我明白了:

在应用程序配置文件中找不到名为xxx的连接字符串

...即使web.config中有一个带有该名称的连接字符串.只有一个.config文件,我正在运行的dll没有配置文件

我试图手动声明我的连接字符串:

Migrate.exe CodeFirst.dll /connectionString="Data Source=192.168...;Initial Catalog=Database;" /connectionProviderName="System.Data.SqlClient"
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,它仍然给出了相同的错误...它是否忽略了我传入的连接字符串并试图再次寻找一个?为什么会这样做?

但这给了我一个非常奇怪的错误:

迁移配置类型"Source = 192.168 ...在程序集CodeFirst.dll中找不到我想知道它是否与空格有关,所以我尝试将'数据源'更改为'服务器'并将初始目录更改为'数据库'但这没有帮助.

编辑:固定引号

我已经看过类似的问题,但他们都是关于在视觉工作室内运行的,我在尝试这样做时没有任何问题.关于我能做什么的更多想法?有没有人得到这些选项中的任何一个?

the*_*age 30

最后让它与Entity framework 6.1.3一起使用.我不确定该版本是否真的重要,但我们最终下载了代码并对其进行了调试.

真正有所作为的是在所需的两条路径中使用完整路径...希望可以帮助某人!

migrate CodeFirst.dll Configuration /startUpDirectory:"C:\src\app\CodeFirst\bin\Debug" /startUpConfigurationFile:"C:\src\app\CodeFirst\bin\CodeFirst.dll.config" 
Run Code Online (Sandbox Code Playgroud)

我联系了EF团队,显然EF7会更好:https://github.com/aspnet/EntityFramework/issues/2974

  • 你的回答对我有用 - 使用.dll.config是我正在寻找的答案.我还设法让相对路径工作(所以你可以把.bat文件放在项目根目录中):使用命令'CD/D%~dp0'设置当前目录我的整个.bat文件是:<code> CD/D%~dp0 SET MigrateExe = packages\EntityFramework.6.1.3\tools\migrate.exe%MigrateExe%NameOfDLL.dll Configuration/startUpDirectory:"%~dp0\NameOfDLL\bin\Debug"/ startUpConfigurationFile:"%~dp0\NameOfDLL\BIN \调试\ NameOfDLL.dll.config" (2认同)