我主要将 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 语句中仅多一行...