Dot-Net-Core

將參數傳遞給 EF Core 的 IDesignTimeDbContextFactory

  • September 8, 2021

我們如何將參數傳遞給 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 commandswith AppArgs,正如這裡討論的那樣。但是這些已經改變,現在也可以從 PM 控制台訪問,如上面的“現在”答案中所述。

引用自:https://stackoverflow.com/questions/50553481