【问题标题】:How can I set the Code First connection string via SetParameters with Entity Framework如何使用实体框架通过 SetParameters 设置 Code First 连接字符串
【发布时间】:2018-10-26 19:09:22
【问题描述】:

我有一个项目,它有多个环境,每个环境都使用自己的数据库。我最近将数据库切换到 EF 以使其更容易更新。唯一的问题是,我似乎无法获取 EF 转换的连接字符串。

目前,我的流程如下:

  • 我有一个SetParameters.xml 文件,其中包含该站点的默认连接字符串。
  • 对于每个环境,我都有一个 SetParameters.ENV.xml 文件,其中包含修改后的连接字符串。
  • 我使用 Bamboo 使用 msbuild 创建构建。
  • 我使用 Bamboo 通过 msdeploy 进行部署和转换。

常规连接字符串的转换工作正常。

根据this documentationWeb.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();

【问题讨论】:

  • 已取得进展。它现在转换连接字符串。尽管数据库在第一次运行时并没有像预期的那样更新。
  • 如何更新数据库?迁移、初始化程序或其他方法?
  • 我正在使用迁移,然后在部署时将 MigrateDatabaseToLatestVersion 初始化程序添加到 Web.config 文件中。
  • 看看这些问题,尤其是最后一个他正在更改连接字符串并且在此之前进行初始化的问题:stackoverflow.com/questions/18550011/…
  • 感谢@SteveGreene,该链接使我找到了解决方案。非常感谢。

标签: c# asp.net entity-framework-6


【解决方案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();
}

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多