2015-10-08 89 views
0

我有一個asp.net應用程序,我正在從我的歷史定製認證和遷移到asp.net標識框架的過程中。動態更改標識數據庫

這是一個基於雲的解決方案,以前用戶登錄時,它使用域名查找後,從通用數據庫獲取連接字符串。

但是,一旦我有正確的數據庫名稱,我怎麼能使用這個與身份,因爲這是連接字符串的定義:

public ApplicationDbContext() 
     : base("MyConStringHere", throwIfV1Schema: false) 
    { 
    } 

目前,我有它返回一個連接字符串的方法根據客戶的數據庫:

return new SqlConnection(connectionString); 

但我在我的應用程序通過數據庫名稱之前調用這個,我不確定我怎麼能在ApplicationDbContext(使用)

感謝

+0

不知道是否有問題,但您可以在ApplicationDbContext構造函數中使用連接字符串。例如:my ctx = new ApplicationDbContext(connectionString); – Entrodus

回答

2

剛剛從你的配置通過你的連接字符串:

public ApplicationDbContext(string myClientConnectionString) 
     : base(myClientConnectionString, throwIfV1Schema: false) 
    { 
    } 

這是我在多租戶應用程序中使用。

+0

輝煌,謝謝!你如何將連接字符串傳遞給它?我已經嘗試在Startup.Auth.cs但它創建一個新的實例沒有創建方法?也許我很想知道如何調用這個部分 – realtek

+0

如果你正在構建多租戶應用程序,那麼你的下注就是使用依賴注入容器,通過某個參數(url?)決定你正在使用的租戶,以某種方式得到從存儲中獲取相關的連接字符串,並使用正確的數據庫啓動您的'dbContext'。而且你不使用OWIN來做到這一點 - 它不是爲你的目的而設計的。我建議你查找帶有多租戶的DI容器,並且打開另一個更詳細的問題 - 一旦你失敗了。 – trailmax

+0

好的想法,你的意思是通過給用戶一個獨特的URL爲例,而不是讓Web應用程序來確定它嗎?謝謝 – realtek