在类库中通过自动迁移将连接字符串解析为DbContext

时间:2019-09-04 05:37:32

标签: c# entity-framework entity-framework-6

我有2个需要使用相同数据库的应用程序。

  1. ASP.NET MVC应用程序
  2. Windows服务

我在单独的项目中拥有DbContext,因此这两个应用程序都可以使用该库。

这两个应用程序均从相同的外部源获取数据库连接字符串。它们中的每一个启动后,都会从外部源请求连接字符串,并将其保存在静态属性中。

当应用程序初始化DbContext类时,我让它们解析连接字符串。

public class Context : DbContext
{
    public Context(string ConnectionString) : base(ConnectionString)
    {
            Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Migrations.Configuration>());
    }
}

这很有效,直到我必须迁移到数据库的新版本为止。当我使用update-database在本地开发计算机上执行此操作时,出现以下错误:

错误:

  

目标上下文'xxx.xxx.Context'是不可构造的。添加默认构造函数或提供IDbContextFactory的实现。

如果添加默认构造函数或实现IDbContextFactory,则基本上必须对连接字符串进行硬编码。在开发机器上对我的连接字符串进行硬编码是可以的,但这显然不适用于客户端站点。

如何使上下文使用正确的连接字符串更新数据库而不必对其进行硬编码?我尝试在我的DbContext所在的类中实现IDbContextFactory。如果我在每个应用程序中都实现一次,那是否是解决此问题的最佳方法?

0 个答案:

没有答案
相关问题