我的项目有多个环境,每个环境都使用自己的数据库。我最近将数据库切换到EF以便更新它。唯一的问题是,我似乎无法获得EF转换的连接字符串。
目前,我的流程如下:
SetParameters.xml
文件,其中包含该网站的默认连接字符串。SetParameters.ENV.xml
文件,其中包含已修改的连接字符串。常规连接字符串上的转换工作正常。
根据this documentation,Web.config
文件将添加一个额外的连接字符串。就我而言,它是Main_DatabasePublish
。
我似乎无法改变。如果我将一个默认连接添加到发布配置文件,它将被设置为该字符串,但不幸的是它仍然没有转换为使用正确的数据库。
我想补充说我没有使用EF Core。看来命令行会更容易。
有什么想法吗?
更新
感谢@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();
答案 0 :(得分:1)
我最终做的是将以下内容添加到Global.asax::Application_Start
using System.Data.Entity;
using System.Data.Entity.Migrations;
System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDBContext, Configuration>());
var dbMigrator = new DbMigrator(new Configuration());
var migrations = dbMigrator.GetPendingMigrations();
if (migrations.Any())
{
dbMigrator.Update();
}