最初の移行を作成するために、 ドキュメント をフォローしています。 dotnet
を実行すると、ヘルプセクションが表示されます。これは、PATHが適切に機能することを意味します。
次に、コンソールウィンドウのドキュメントから以下のコマンドを実行しようとします。
dotnet ef migrations add InitialCreate
次のエラーが表示されます。
Could not execute because the specified command or file was not found. Possible reasons for this include: * You misspelled a built-in dotnet command. * You intended to execute a .NET Core program, but dotnet-ef does not exist. * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.
- コマンドをコピーしたため、最初のアイテムを除外しました。
- パッケージMicrosoft.EntityFrameworkCore.SqlServerがインストールされているため、2番目のアイテムを除外しました。
- dotnetを呼び出すとヘルプセクションが表示されるため、3番目の項目を除外しました。
私は問題をグーグルで調べていますが、バージョンが新しいため、先に進むことはあまりありませんし、以前のバージョンの同様の問題でinれています。
明示的に追加する必要がある場合に備えて、Microsoft.EntityFrameworkCoreを強制的にインストールしようとしました。エラーメッセージが表示され、最新バージョンは2.2.6であり、ダウングレードは許可されていません。私のシステムに既にあるSQLパッケージと互換性のあるバージョンをインストールする方法がわかりません(この問題を解決する適切なアプローチであるかどうかはさらに不確実です)。
検出されたパッケージのダウングレード:3.0.0-preview6.19304.10から2.2.6へのMicrosoft.EntityFrameworkCore。プロジェクトから直接パッケージを参照して、異なるバージョンを選択します。
ウェブ->
Microsoft.EntityFrameworkCore.SqlServer 3.0.0-preview6.19304.10->
Microsoft.EntityFrameworkCore.Relational 3.0.0-preview6.19304.10->
Microsoft.EntityFrameworkCore(> = 3.0.0-preview6.19304.10)
Web-> Microsoft.EntityFrameworkCore(> = 2.2.6)
ASP.NET Core 3 Preview 4の announcement を参照してください。これは、このツールが組み込みではなく、明示的なインストールが必要であることを説明しています。
Dotnet efツールは、.NET Core SDKの一部ではなくなりました
この変更により、
dotnet ef
は、グローバルツールまたはローカルツールとしてインストールできる通常の.NET CLIツールとして。たとえば、移行を管理したり、DbContext
をスキャフォールドできるようにするには、dotnet ef
次のコマンドを入力するグローバルツールとして:
dotnet tool install --global dotnet-ef --version 3.0.0
変更の理由は docs で説明されています:
なぜ
この変更により、
dotnet ef
は、NuGetの通常の.NET CLIツールとして、EF Core 3.0も常にNuGetパッケージとして配布されているという事実と一致しています。
さらに、次のNuGetパッケージをプロジェクトに追加する必要がある場合があります。
編集:展開にDockerfileを使用している場合、これらはこの問題を解決するために必要な手順です。
Dockerfileを変更して、以下を含めます。
FROM mcr.Microsoft.com/dotnet/core/sdk:3.1 AS build-env
RUN dotnet tool install -g dotnet-ef --version 3.1.1
RUN export PATH="$PATH:/root/.dotnet/tools"
また、dotnet ef
コマンドはdotnet-ef
同じ問題がありました。私は解決し、私のPCのすべてのバージョンをアンインストールしてから、dotnetを再インストールしました。