我正在构建一个应用程序,该应用程序将根据用户在登录时选择的数据库连接到同一模式的不同数据库。所有后续查询将由EntityFramework使用所选的数据库进行。此刻我将这个数据库名称存储在一个静态变量中。这是正确的做法吗?是通过静态变量获取EF数据库名称的好习惯
这是我做到的。
我在My Context中创建了一个静态变量,当我在构造函数中创建上下文的新实例时,它调用Static变量。
public class MyContext : DbContext
{
public static string LoggedDatabase { get; set; }
static MyContext()
{
Database.SetInitializer<MyContext>(null);
}
public MyContext()
: base(GetConnectionString())
{
}
private static string GetConnectionString()
{
if (string.IsNullOrWhiteSpace(LoggedDatabase))
throw new ArgumentNullException("", "Database is not specified");
var connBuilder =
new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString)
{
InitialCatalog = LoggedDatabase
};
return connBuilder.ToString();
}
'static'是definetly不是要走的路。不确定你想要得到什么样的行为,但它看起来像“只读”更接近你的需求。 – Leron 2014-09-29 06:09:22
我正在为传统应用程序构建基于Web的解决方案。每个部门共有9个共享相同模式的数据库。用户将从登录屏幕中选择数据库,并根据选择动态创建连接字符串。现在问题是在WPF和Asp.net客户端共享上下文。所以我需要一个解决方案来解决这两个要求。我希望我很清楚。 – 2014-09-29 10:45:16