动态更改Entity Framework DB连接的连接字符串

时间:2019-05-20 14:15:21

标签: .net database entity-framework model-view-controller

我正在使用MVC5和Entity Framework6。我需要将数据双重加载到两个不同的数据库中,因此我需要在第二次加载之前动态更改DBContext的连接。

在做一些研究时,我看到很多人说您可以将连接字符串作为DBContext的参数来传递。

但是,就我而言,它似乎没有任何接受任何参数的重载,并且当我检查DBContext时,它没有接受任何参数的构造函数。

public partial class Entities : DbContext
{
    public Entities()
        : base("name=Entities")
    {
    }

这是较新版本的Entity Framework中折旧的构造函数吗?我该如何解决?

2 个答案:

答案 0 :(得分:0)

每个数据库都有自己的上下文会更好。

因此,我建议您有两个扩展DbContext的类,并根据需要使用它。

由于我们谈论的是不同的数据库,因此架构可能会发生变化,映射可能会有所不同等等。

如果必须检索相同类型的数据,则可以利用多态性并避免代码中出现很多条件。

答案 1 :(得分:0)

要获取参数,我认为您需要将连接字符串添加到方法中,并根据需要使用尽可能多的连接。

public Entities(string connectionNameInYourWebConfig = "yourDefaultName") : base($"name={connectionNameInYourWebConfig}") { }

我猜是因为在您的情况下,我偶尔会向该参数添加默认连接。我希望这能回答您的问题,干杯