如果我有下面的代码(例如,在我的仓库的构造函数):实体框架更改数据库
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
我有多个基于相同模型的数据库,我想在稍后阶段更改数据库。 –