0
我需要能夠同時連接到2個數據庫。數據庫具有相同的結構,所以我認爲我應該可以使用同一個上下文的兩個實例。但我無法得到它的工作。 只要爲第二個實例設置連接字符串,第一個實例的連接字符串就會更改爲匹配它。有什麼關於我缺少的EF?單例模式應該創建DBContext的多個實例,但不需要
我有下面的助手類來創建一個上下文。
public class SettingsHelper
{
private static SettingsHelper instance;
public static SettingsHelper Instance
{
get
{
if (instance == null)
{
instance = new SettingsHelper();
}
return instance;
}
}
public static Context CreateContext(string constr)
{
try
{
var db = new Context(constr);
return db;
}
catch (Exception ex)
{
HandleException.Show(ex);
}
return null;
}
}
實際的上下文類包含
public class Context : DbContext
{
public Context(string connString)
: base(connString)
{
// some code
}
}
如果我以下列方式
using (Context firstContext = SettingsHelper.CreateContext("conn1"))
{
// firstContext has connection string "conn1"
using (Context secondContext = SettingsHelper.CreateContext("conn2" ))
{
// firstcontext now has the same connection string "conn2"
}
}
conn1就和CONN2在app.config中定義創建兩個上下文
這裏我的背景。 我不知道我的問題是因爲_connectionString是靜態的嗎?但是如果我將其改爲公開我得在上下文中的錯誤初始化器
public class Context : DbContext
{
static string _connectionString;
public Context()
: base(_connectionString ?? "Syrius")
{
}
public Context(string connString)
: base(connString)
{
_connectionString = connString;
Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Migrations.Configuration>());
}
public Context(string connString, int TimeOutSecs)
: base(connString)
{
_connectionString = connString;
}
public DbSet<Label> Labels { get; set; }
// etc
}
問題是什麼?你想知道什麼? – Steven
我編輯並澄清了這個問題 –
你的代碼沒有問題。問題在於別的地方。 – Steven