使用多个Web配置变换进行实体框架迁移

7

我已经在使用启用了迁移的实体框架5的Visual Studio 2010中创建了一个ASP.NET MVC 4项目。我有多个Web.config文件用于不同环境(Debug, Staging, Release),这些文件将根据环境指定不同的数据库连接字符串。如何在使用Package Manager Console中的Update-Database命令时处理迁移和多个配置文件?每次运行此命令时,它都会默认使用主Web.config连接字符串。提前感谢您的任何帮助。


你是如何将代码部署到不同的环境中的?例如使用Visual Studio?还是使用CI Jenkins? - uv_man
我目前正在使用Visual Studio中的发布Web选项。 - Brandon B.
我认为有一个选项可以更新数据库。 - uv_man
我刚回答了一个类似的问题。希望它有用: https://dev59.com/mH3aa4cB1Zd3GeqPZzO-#22189549 - Rob Bell
3个回答

10
为了尽可能简化事情,我在远程测试和生产服务器上运行迁移的方法是从包控制台运行以下命令(数据源和用户名/密码会根据我想要运行迁移的服务器而变化):
Update-Database -Verbose -ConnectionString "Data Source=ServerName;Initial Catalog=db;User Id=user;Password=pass;" -ConnectionProviderName "System.Data.SqlClient"

这对我来说迄今为止很有效,如果有其他人在寻找,希望可以帮到你们。感谢大家的评论。

0

为了迁移到不同的环境,您应该使用Web config transform tool,我认为这不是Entity Framework迁移的责任。


1
转换功能正常工作。我不清楚如何在不同的环境中处理迁移和更新数据库。 - Brandon B.

0

http://msdn.microsoft.com/en-us/data/jj618307.aspx

EF Code First Migrations带有一个迁移工具,允许您通过命令提示符运行“更新”命令。

我不太确定您的设置方式,但我们做了类似的事情,通过CI服务器(Jenkins)部署代码。然后我添加了一个发布后步骤,通过命令行运行update-database。

它的好处在于您可以指定连接字符串。

同样,这完全取决于它如何适合您的流程,您甚至可以使用Nant来执行此操作。

希望这有所帮助。


这个 migrate.exe 工具可能是我正在寻找的。我有一个与您的部署过程相关的附加问题,如果迁移失败或出现意外情况,您如何回滚? - Brandon B.
我们将采用传统的回滚方式。DBMigrations允许您针对迁移脚本进行操作(如果需要回滚),但我不建议在生产服务器上依赖此功能进行回滚。您还可以从迁移中生成脚本。 - uv_man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接