先执行代码迁移
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).不过,更改数据源对打开数据库有效。
我尝试了解决方案:
- 试过这个:"Execute Code First Migrations" checkbox disappeared from my publish profile
- 启用迁移 -Force
- 清理、重建并重新启动项目和
Visual Studio.
- 删除并重新导入发布文件
几个月前我尝试了以上解决方案。那时上面的几点起作用了,但现在什么都不起作用了。
有什么解决办法吗?我浪费了一整天,仍然没有找到解决方案。
您需要安装 Visual Studio 更新 4. 转到工具下的扩展和更新。
您可能会发现这有帮助:
Entity Framework Code First Data Migrations not working with VS2012 Web Deploy
我自己仍在努力寻找一种简单的方法来处理迁移。
我找到了一个临时解决方案。在没有命名空间的情况下手动将所有 ConnectionString 名称(默认连接)替换为上下文名称 "ApplicationDbContext" 解决了问题。
我已经安装了 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).不过,更改数据源对打开数据库有效。
我尝试了解决方案:
- 试过这个:"Execute Code First Migrations" checkbox disappeared from my publish profile
- 启用迁移 -Force
- 清理、重建并重新启动项目和 Visual Studio.
- 删除并重新导入发布文件
几个月前我尝试了以上解决方案。那时上面的几点起作用了,但现在什么都不起作用了。
有什么解决办法吗?我浪费了一整天,仍然没有找到解决方案。
您需要安装 Visual Studio 更新 4. 转到工具下的扩展和更新。
您可能会发现这有帮助:
Entity Framework Code First Data Migrations not working with VS2012 Web Deploy
我自己仍在努力寻找一种简单的方法来处理迁移。
我找到了一个临时解决方案。在没有命名空间的情况下手动将所有 ConnectionString 名称(默认连接)替换为上下文名称 "ApplicationDbContext" 解决了问题。