[英]Pass DbContext object as parameter through autofac class register
[英]Initialize and pass database name as parameter to DbContext object having scope of whole class
我正在使用EF 6開發多租戶MVC 5應用程序。對於每個用戶,我都覆蓋了Entities構造函數以獲取數據庫名稱作為參數。 我已經將數據庫名稱存儲在針對所有用戶維護的另一個代碼優先數據庫中。 用戶登錄時,其數據庫名稱將加載到會話中,然后它將傳遞給Entities構造函數。 一切都很好,但這是問題所在,
我想在控制器中聲明具有類范圍的Entities對象。 現在:
我想做的是:
public class ABCController : BaseController //BaseController has all Sessions
{
private MyEntities db = new MyEntities("dbName"); //dbName is a session
// all code and ActionResults here
}
我該怎么做?
如果我在所有使用Entites的ActionResults中初始化實體對象,則該應用程序可以正常工作,但我不想一次又一次地初始化對象。
為什么不? 那正是你應該做的。
即使它是類級別的成員,控制器實例也不會在請求中持久存在。 因此,無論如何,用戶都會為每個請求實例化它。 所有這些方法所做的就是將實例化移動到使用戶上下文可用之前。
每當用戶向應用程序發出請求時,您就擁有該用戶的上下文。 (在這種情況下,來自會話。)該上下文包括數據庫連接的密鑰。 因此,只要用戶發出請求,就可以使用該密鑰創建數據庫連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.