我與實體框架核心的Asp.Net核心應用程序,我初始化如下:實體框架在同一個DBContext上核心多個連接字符串?
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(sqlConnectionString));
這工作得很好,但我有一種情況,我需要從正常運行的主數據庫的讀/寫但對於需要從備用服務器讀取的某些操作(複製目標是隻讀的,用於報告)。
隨着新的Core API通過依賴注入和StartUp.cs中的配置完成所有工作,我該如何切換連接字符串,但使用相同的ApplicationDbContext類?
我知道一個選項將有一個ApplicationDbContext類的副本,我使用不同的連接字符串向DI系統註冊,但我想避免維護兩個相同的DBContext對象,因爲有時候我需要閱讀來自不同的數據庫服務器(但具有完全相同的模式)。
在此先感謝您的指點!
我有點困惑,但你只是想能夠選擇什麼樣的數據庫進行連接的權限?一旦應用程序運行,這不會改變?如果是這樣,那麼'options.UseSqlServer'之前的條件就足夠了嗎?例如'if(Environment.GetEnvironmentVariable(「FIRSTENVIRONMENT」)options.UseSqlServer(「firstEnvironementConnectionString」)else options.UseSqlServer(「secondEnvironementConnectionString」)' – Adrian
這個5分鐘編輯,反正這裏是固定代碼 'if(Environment.GetEnvironmentVariable(「 FIRSTENVIRONMENT「)==」environmentString「)options.UseSqlServer(」firstEnvironementConnectionString「)else options.UseSqlServer(」secondEnvironementConnectionString「)' – Adrian
這將設置連接字符串在應用程序級別,我需要它設置在方法級別。字,一行代碼寫入數據庫A,下一行代碼讀取數據庫B.兩者使用相同的模式,只是在不同的數據庫上運行。 – user1142433