Dot-Net-Core
將參數傳遞給 EF Core 的 IDesignTimeDbContextFactory
我們如何將參數傳遞給 dotnet ef 數據庫更新?
我希望能夠使用參數更新不同的數據庫。
我試過了
dotnet ef 數據庫更新“接受”
dotnet ef 數據庫更新 接受
但它沒有用..
或者我如何設置開關以從我的配置中獲取不同的 conenctionString?
public ProjectContext CreateDbContext(string[] args) { IConfigurationRoot configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); // Find a way to get different connection string var connectionString = configuration.GetConnectionString(args[0]); var builder = new DbContextOptionsBuilder<ProjectContext >(); builder.UseSqlServer(connectionString); return new ProjectContext(builder.Options); }
.NET 5 在此答案發布後的幾週內發布。所以這是可以改變的。
現在回答
.NET 5 和相關的 EF Core 5+ NuGet 支持這一點。在包管理器中,您可以鍵入:
Add-Migration YourMigrationName -Args "Space Separated Args" Update-Database -Args "Space Separated Args"例如,我使用這個:
Update-Database -Args MyConnName在我的啟動項目中,我有一個具有該連接字元串鍵的配置文件(或 appsettings.json),我將其拉入。
注意我說的是 .NET Core 5。這將在幾週後發布完整版本。所以幾週後這個答案可能很簡單。但在那之前,您可能需要安裝預覽版(和 NuGet PreReleases)
回答 現在之前
當被問到這個問題時,沒有選擇,儘管有一些選項,比如使用
dotnet ef commandswithAppArgs,正如這裡討論的那樣。但是這些已經改變,現在也可以從 PM 控制台訪問,如上面的“現在”答案中所述。