我正在構建一個應用程序,該應用程序將根據用戶在登錄時選擇的數據庫連接到同一模式的不同數據庫。所有後續查詢將由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