如何通过SetParameters设置Entity Framework Code First连接字符串
解决Entity Framework(非EF Core)多环境连接字符串转换失效问题
我最近刚碰到和你完全一样的场景:维护一个多环境项目,每个环境用独立数据库,切换到**Entity Framework(非EF Core)**简化数据库更新后,遇到了连接字符串转换失效的坑。
先说说我的部署流程,和你几乎一致:
- 有基础的
SetParameters.xml文件,存着站点默认连接字符串 - 每个环境对应专属的
SetParameters.ENV.xml,里面是该环境的定制连接字符串 - 用Bamboo通过
msbuild构建项目 - 再用Bamboo通过
msdeploy部署并执行连接字符串转换
常规连接字符串的转换都没问题,但按照EF文档配置后,Web.config里新增的Main_DatabasePublish连接字符串死活转不了——哪怕在发布配置文件里加了默认连接,也没法切换到对应环境的数据库。
后来多亏@SteveGreene的提示,我在Application_Start方法里加了这段代码,直接解决了问题:
using System.Data.Entity; using System.Data.Entity.Migrations; Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDBContext, MyConfiguration>()); var dbMigrator = new DbMigrator(new MyConfiguration()); dbMigrator.Update();
这段代码的核心是强制EF在应用启动时,使用当前环境配置好的连接字符串执行数据库迁移,绕开了之前Main_DatabasePublish连接字符串无法被msdeploy转换的问题,确保每个环境都能精准连接到对应的数据库。
内容的提问来源于stack exchange,提问作者gin93r
相关产品推荐
相关产品推荐

