如果我有下面的代碼(例如,在我的倉庫的構造函數):實體框架更改數據庫
var db = new MyDbContext();
var entity = db.Set<Customer>();
再後來我做的:
db.Database.Connection.ConnectionString = mySQLconnectionstring;
我需要重新設置實體?
如果我有下面的代碼(例如,在我的倉庫的構造函數):實體框架更改數據庫
var db = new MyDbContext();
var entity = db.Set<Customer>();
再後來我做的:
db.Database.Connection.ConnectionString = mySQLconnectionstring;
我需要重新設置實體?
壞主意。您應該創建新的上下文實例:
var db1 = new MyDbContext("connstr1");
var db2 = new MyDbContext("connstr2");
否則,你會得到更多的困難,比好處你假設(如果曾經可能)。請注意,每個上下文實例都會保存物化實體的本地緩存並跟蹤其更改。
由於模型是相同的,模型構建(這是EF中最重要的性能命中)只會發生一次。我無法想象,還有什麼可能會迫使你重新使用上下文實例。
連接字符串是傳遞給dbcontext一個sql連接字符串還是一個實體連接字符串? –
http://msdn.microsoft.com/en-us/data/jj592674.aspx – Dennis
如果你想爲多個數據庫使用相同的上下文,你可以這樣做。 一種方法是更改內存中上下文的連接字符串。 更改您想要使用的數據庫之前。撥打這段代碼:
var connStr="YOUR_NEW_DB_CONNECTION_STRING_HERE";
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringsSection.ConnectionStrings["YOUR_DB_CONNECTION_STRING_NAME_EG_CONN_STR"].ConnectionString = connStr;
connectionStringsSection.ConnectionStrings["YOUR_DB_CONNECTION_STRING_NAME_EG_CONN_STR"].ProviderName = "System.Data.EntityClient";
config.Save();
ConfigurationManager.RefreshSection("connectionStrings");
你想達到什麼目的? –
這真的是你可以試試,看看它是否有效。 – Stijn
我有多個基於相同模型的數據庫,我想在稍後階段更改數據庫。 –