不能 运行 使用 migrate.exe 编写首次迁移代码

Can't run code first migrations using migrate.exe

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

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

Migrate.exe CodeFirst.dll /startupConfigurationFile="..\web.config"

我得到:

no connection string named xxx could be found in the application config file

...即使 web.config 中存在具有该名称的连接字符串。只有一个 .config 文件,我 运行 反对

的 dll 没有配置文件

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

Migrate.exe CodeFirst.dll /connectionString="Data Source=192.168...;Initial Catalog=Database;" /connectionProviderName="System.Data.SqlClient"

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

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

The migrations configurations type "Source=192.168... could not be found in the assembly CodeFirst.dll I wondered if it had something to do with spaces, so I tried changing 'data source' to 'server' and Initial Catalog to 'database' but that didn't help.

编辑:固定引号

我见过类似的问题,但它们都是关于 运行ning 在 visual studio 内部的,我在尝试这样做时没有遇到任何问题。关于我能做什么的更多想法?有没有人得到这些选项中的任何一个?

终于可以与 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" 

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

我们这些刚开始使用此工具的人可能会发现此 PowerShell 脚本很有用 - 它包含一些常见用例的默认值:

Param(
    [string]$DbConnectionString,
    [string]$StartUpDirectory,
    [string]$DataModelDllName,
    [string]$StartUpConfigurationFile = "$StartUpDirectory$DataModelDllName.config",
    [string]$ConfigurationClassName = "Configuration",
    [string]$ConnectionProviderName = "System.Data.SqlClient",
    [string]$MigrateToolPath = "$PSScriptRoot\migrate.exe"
)

& $MigrateToolPath $DataModelDllName $ConfigurationClassName /startUpConfigurationFile=$StartUpConfigurationFile /connectionString=$DbConnectionString /connectionProviderName=$ConnectionProviderName  /startUpDirectory=$StartUpDirectory