web-dev-qa-db-ja.com

efコアは、データベースの更新中にASPNETCORE_ENVIRONMENTを使用しません

Visual Studioを使用して、特定の移行ですべての環境を更新します。以下のコマンドを使用して正常に機能していました。

update-database -Migration initMigrationProduct -c ProductContext -Environment Production

Ef core 2.0では、このコマンドが変更され、パラメーター-Environmentが削除されました。ドキュメントでそれは言った。

「2.0では、代わりにASPNETCORE_ENVIRONMENT環境変数を使用できます。」

https://docs.Microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

私は今、あらゆる種類の方法を試しましたが、update-database ef core 2.0では、ASPNETCORE_ENVIRONMENT変数。レジストリにアプリケーションのプロパティを設定しようとしました。

これを異なる環境の更新で動作させるために必要なことを教えてください。

異なるランチ設定でアプリケーションを起動した場合、動作しますが、パッケージマネージャーコンソールを使用しません。

31
joakimja

Visual Studioでパッケージマネージャーを使用することは、私にとって行き詰まりでした。解決策は次のとおりです。

  1. ソリューションのスタータープロジェクトの.csprojに以下を追加します。

    <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
    </ItemGroup>
    
  2. コマンドtool(cmd)を開き、開始プロジェクトの.csprojと同じフォルダーに移動します(デフォルトのプロジェクト)。

  3. Anton Toshikが提案したコマンドを実行しますset ASPNETCORE_ENVIRONMENT=Production

4.コマンドdotnet ef database update initMigrationProduct -c ProductContextを実行します。これで動作します。

[〜#〜] remark [〜#〜]:このコマンドでは、databaseupdateが場所を変更して以来以前のバージョン。そして、移行のための引数/コードはありません。この説明の後、ドキュメントでさらに説明します。
https://docs.Microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet

1
joakimja

Visual Studio内のPackage Manager Console(PMC)でASPNETCORE_ENVIRONMENT変数をProductionに設定するには、最初にこのコマンドを使用します

$env:ASPNETCORE_ENVIRONMENT='Production'

その後、使用することができます

Update-Database

通常は。

50
Martin Florin

EntityFrameworkCore#6846 によると、正しいソリューションは--environmentオプションを使用することであり、dotnet efコマンドはASPNETCORE_ENVIRONMENTを尊重しません。

dotnet ef database update --environment Production
1