我正在研究將跨多個數據庫使用相同數據庫模式的應用程序。出於這個原因,我創建了一個名爲MyTemplate
的數據庫。當創建新用戶時,他們將擁有自己的數據庫實例。因此,將創建一個名爲MyTemplate_[UserName]
的數據庫。當用戶登錄時,我需要將他們的查詢指向他們的數據庫。出於這個原因,我知道我需要在運行時設置連接字符串。我的問題是,我也想使用實體框架。動態連接字符串的安裝實體框架
目前,我使用MyTemplate作爲源創建了一個新的.edmx。我想我可以更新代碼並在那裏設置連接字符串。不幸的是,我無法弄清楚如何設置它。 TemplateEntities的構造函數沒有允許我傳入連接字符串的重載。我注意到從DbContext派生的TemplateEntities,我不認爲這會是問題。
string connectionString = GetUsersConnectionString();
using (TemplateEntities entities = new TemplateEntities())
{
TemplateEntity entity = new TemplateEntity();
// Save to the database
entities.TemplateEntity.Add(entity);
entities.SaveChanges();
}
我是不是錯誤地創建了.edmx
?或者我完全錯過了一些東西?我的Google所有內容都顯示了一個允許傳入連接字符串的重載。但是,我沒有可用的重載。
當我這樣做,我收到一個錯誤,指出:「對象」不包含一個構造函數1個參數。我究竟做錯了什麼? – user70192
帶有新構造函數的部分類定義必須與生成的類位於同一個命名空間中 - 否則它將聲明一個新類(默認情況下,該對象來自'object') –
+1:我對此類構造函數爲何感到困惑不在默認模板中,但這是一個不錯的和乾淨的解決方案,thx。 – reSPAWNed