小编A.I*_*Ima的帖子

在 EF 6 中在运行时更改连接字符串

我主要将 dbcontext 与 using 语句一起使用,如下所示:

using (var context = new MyContext())
{
}
Run Code Online (Sandbox Code Playgroud)

但是后来我不得不添加一个带有更改数据库功能的项目。我发现我可以将我的 dbcontext 构造函数更改为:

public MyContext(string connectionstring)
        : base(connectionstring)
{
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个带有连接字符串属性的类:

public static class DbAccessor
{
    public static string ConnectionStringForContext { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在开始时设置了这个属性,我的 using 语句如下所示:

using (var context = new MyContext(DbAccessor.ConnectionStringForContext) 
{}
Run Code Online (Sandbox Code Playgroud)

它有效,但我的连接字符串现在无处不在,我觉得我不应该对连接字符串这样做。有没有更好的方法来做到这一点?如果我想更改连接字符串,最好的处理方法是什么?我应该停止使用这些 using 语句吗?

我见过这个问题:Entity Framework change connection at runtime

但不同的是,我有一个有效的解决方案,但我不想到处都有我的连接字符串。如果我在每个 using 语句中都使用了该扩展方法。这几乎就像我的解决方案在每个 using 语句中仅多一行...

c# entity-framework connection-string database-connection

5
推荐指数
1
解决办法
5025
查看次数