ついに修正しました。
この問題を解決するために私が見つけた2つの解決策があります。
- まず、EntityFrameworkの移行をサポートするすべてのデータベースに共通の修正があります。 :
- .NETコアの使用 タスク、dotnetefツールをインストールする必要があります :タスクは次のようになります:
そしてこれはYAMLになります(リリースパイプラインの外で使用したい場合):
- task: [email protected]
displayName: 'dotnet custom'
inputs:
command: custom
custom: tool
arguments: 'install --global dotnet-ef --version 3.1.4 --ignore-failed-sources'
- 必要なツールをインストールしたら、 CMD またはバッシュ タスク、次のようなスクリプトを実行する必要があります:
dotnet ef database update -c <DBCONTEXT> -p <PROJECT> -s <STARTUP_PROJECT> -v --no-build
フラグを追加するだけです-c プロジェクトに複数のコンテキストがある場合(他のDbContextがいくつかのナゲットパッケージから取得される場合があります)。
フラグ-no-buildを追加したことに注意してください グッドプラクティスに従うために、ビルドパイプラインでプロジェクトをすでにビルドしているためです。
- もう1つのオプション(および私が最終的に使用したオプション)は、このタスク これは基本的に同じプロセスを実行しますが、コンパイル済みの .dllを使用して実行する点が異なります。 ファイルがあるため、移行を機能させるためにプロジェクト全体をコピーする必要はありません。タスクの設定は、多くの入力を入力する必要がありますが、非常に簡単で、他のデータベースでも機能するはずです。
ただし、 SQL Serverを使用する必要がある場合 またはMySQL プロセスがはるかに簡単なので、移行スクリプトを使用します( .sqlを生成するだけです。 スクリプトを作成すると、移行をデプロイするために必要な唯一のファイルになります。