1
有什麼方法可以檢測我的應用程序是否正在運行dotnet ef *
或PowerShell選項?任何方式來檢測EntityFramework核心是否在工具內運行?
我正在用Entity Framework Core創建一個多租戶ASP.NET核心應用程序,並且我有邏輯來決定應該使用哪個連接字符串,但是如果我通過創建遷移或更新數據庫,則不應運行命令行。我不能依靠檢查是否存在HttpContext
,因爲我在配置期間也使用我的DbContext
,我也不能使用其他命令行參數或環境變量。
編輯:找到一個方法,如果一個連接字符串已經配置,它的效果並不理想,但我可以用它來幫助我的具體使用情況:
optionsBuilder.Options.Extensions
.OfType<RelationalOptionsExtension>()
.FirstOrDefault()?.ConnectionString
我之前嘗試過IDbContextFactory,但最終沒有使用它,因爲它不支持依賴注入。我需要使靜態可訪問的所有必要的服務和配置依賴關係,除非我失去了一些東西? –
把它看作另一個'Main',你不能注入服務。通過調用'Startup.ConfigureServices()'來構建你的服務提供者,或者提出另一種可以調用的方法。 – bricelam
完美!爲沒有IHostingEnvironment的'Startup'做了一個替代構造函數,然後我用'new ServiceCollection'調用'ConfigureServices'。 –