先执行代码迁移

Execute Code first Migration

我已经安装了 Windows 8.1 pro 并将所有 MVC 项目移动到新工作-space 使用 VS 2013 Community Edition。所有项目都使用代码优先迁移。 数据库发布也是使用代码优先迁移完成的。在我更新我的机器之前,一切都 运行 很好。

但是现在当我将 Web 应用程序发布到远程服务器时,'Publish Web' 对话框不显示 "Execute Code first Migration",而是显示 "Update database" 用于更新数据库。 当我关闭它时,它会修改 DB First 的发布文件。似乎某些全局设置将其强制执行为以下代码:

 <Objects xmlns="">
        <ObjectGroup Name="DefaultConnection" Order="1" Enabled="False">
          <Destination Path="" />
          <Object Type="DbDacFx">
            <PreSource Path="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\MVC-20140923125211.mdf;Initial Catalog=MVC-20140923125211;Integrated Security=True" includeData="False" />
            <Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
          </Object>
          <UpdateFrom Type="Web.Config">
            <Source MatchValue="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\MVC-20140923125211.mdf;Initial Catalog=aspnet-MVC-20140923125211;Integrated Security=True" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
          </UpdateFrom>
        </ObjectGroup>
      </Objects>

很奇怪为什么我的所有项目都没有显示 "Execute Code first Migration"。

这种行为对于我所有的其他项目也是一样的。

App_Data 数据库也没有打开。所以我将 connectionString 的数据源从 Data Source=(LocalDb)\v11.0 更改为 Data Source=(LocalDb)\MSSQLLocalDB (MSSQL Sever 2014 express).不过,更改数据源对打开数据库有效。

我尝试了解决方案:

几个月前我尝试了以上解决方案。那时上面的几点起作用了,但现在什么都不起作用了。

有什么解决办法吗?我浪费了一整天,仍然没有找到解决方案。

您需要安装 Visual Studio 更新 4. 转到工具下的扩展和更新。

您可能会发现这有帮助:

Entity Framework Code First Data Migrations not working with VS2012 Web Deploy

我自己仍在努力寻找一种简单的方法来处理迁移。

我找到了一个临时解决方案。在没有命名空间的情况下手动将所有 ConnectionString 名称(默认连接)替换为上下文名称 "ApplicationDbContext" 解决了问题。