我们最近切换到Entity Framework数据迁移,我正在为我们的MVC应用程序编写一些自动化脚本。如果我有一个Web.config指向,我可以使用4.3中的migrate.exe工具从我们的构建服务器成功运行迁移。命令看起来像:
ProjectName\packages\EntityFramework.4.3.1\tools\migrate.exe MyAssembly /startupdirectory:ProjectName\bin\Debug /startupconfigurationfile:ProjectName\Web.config /verbose
但是,由于各种原因,我希望避免使用Web.config,并在迁移时传递正确的连接字符串:
ProjectName\packages\EntityFramework.4.3.1\tools\migrate.exe MyAssembly /startupdirectory:ProjectName\bin\Debug /connectionString:"Data Source=awesomeserver;Initial Catalog=awesomedatabase;User Id=funkyuser;Password=crazypassword" /verbose
这不行。更糟糕的是,它使用NullReferenceException崩溃migrate.exe。连接字符串与我们在Web.config中使用的连接字符串相同。
以前有人遇到过吗?我的连接字符串格式错了吗?错误?
解决方法
好的,我们搞定了在没有Web.config的情况下运行时,connectionProviderName参数也必须传入:
ProjectName\packages\EntityFramework.4.3.1\tools\migrate.exe MyAssembly /startupdirectory:ProjectName\bin\Debug /connectionProviderName:"System.Data.sqlClient" /connectionString:"Data Source=awesomeserver;Initial Catalog=awesomedatabase;User Id=funkyuser;Password=crazypassword" /verbose
我已经确认这是有效的。