VS 2017パッケージマネージャーコンソールでdotnet efツールを使用すると、EF Coreツールを更新する必要があるという警告メッセージが表示されます。
PM> dotnet ef migrations list -s ../RideMonitorSite
The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.2-rtm-30932'. Update the tools for the latest features and bug fixes.
20180831043252_Initial
しかし、csprojファイルには次のエントリがあります。
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.2" />
</ItemGroup>
実際、インストールされているバージョンが古いことを確認しました。
PM> dotnet ef --version
Entity Framework Core .NET Command-line Tools
2.1.1-rtm-30846
それでは、ツールを更新するにはどうすればよいですか?ところで、私は他の回答で、古くなったglobal.jsonファイルがこの問題を引き起こす可能性があることを見てきました。しかし、ソリューションのどこにもglobal.jsonファイルがありません。
この問題を githubの開発チーム にバウンスしました。これは、EF Coreを使用したAspNet Coreサイトの作成時に読み込まれる現在のツールパッケージまたはnugetパッケージの 既知の問題 であることが判明しました。将来のリリースで修正される予定です。
今のところ、回避策は単に警告を無視することです。
別の回避策も提供されています。csprojファイルを調整して、AspNet Coreメタパッケージのバージョンを明示的に定義します。これを書いている時点では2.1.3までですが、そのアプローチを実現できませんでした。警告メッセージは引き続き表示されます。
これを試してください:Install-Package Microsoft.EntityFrameworkCore.Tools
それでも問題が発生する場合は、これも実行してください:pdate-Package Microsoft.EntityFrameworkCore.Tools
新しい.NET Core SDK v2.1.401バージョンをインストールし、再度dotnet ef --versionを確認します。私は同じ問題を抱えていましたが、私の場合はうまくいきました。また、Microsoft.EntityFrameworkCore.Tools.DotNetを追加する必要はありません。
私の解決策は、Microsoftからdotnet-efツールをインストールすることでした https://www.nuget.org/packages/dotnet-ef 。同じコマンドを使用しますが、警告は使用しません。変更点は、dotnet efの代わりにdotnet-efを使用することです。
パッケージを具体的に更新する方法を見つけることができませんでしたが、パッケージマネージャーコンソールで 'update-package'を実行しました。 EF Core Toolsを含む、プロジェクトで参照されるすべてのパッケージを実行して更新しました。望まないパッケージを更新する可能性があるため、これは理想的ではありません。
このドキュメントの手順に従うことで問題を解決できました- https://docs.Oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html
Visual Studioのパッケージマネージャーコンソールを使用したデータベースのスキャフォールディング
Install-Package MySql.Data.EntityFrameworkCore-バージョン8.0.13
重要
バージョン(たとえば、-Version 8.0.13)は、使用している実際のConnector/NETバージョンと一致する必要があります。現在のバージョン情報。
[ツール]から[パッケージマネージャーコンソール]または[ソリューションのNuGetパッケージの管理]を選択し、[NuGetパッケージマネージャー]メニューから次のNuGetパッケージをインストールします。
Microsoft.EntityFrameworkCore.Design
EF Core 1.1 only: Also add the MySql.Data.EntityFrameworkCore.Design package.
Microsoft.EntityFrameworkCore.Tools version 1.1.6 (for EF Core 1.1) and Microsoft.EntityFrameworkCore.Tools version 2.0.3 (for EF Core 2.0)
Note
The .NET tools are included in the .NET Core 2.1 SDK and not required or supported for EF Core 2.1. If this is an upgrade, remove the reference to that package from the .csproj file (version 2.0.3 in this example) :
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.3" />
Package Manager Consoleを開き、プロンプトで次のコマンドを入力して、DbContext
データベースのsakila
を作成します(調整します) user =およびpassword =オプションの設定に一致する接続文字列値):
Scaffold-DbContext "server = localhost; port = 3306; user = root; password = mypass; database = sakila" MySql.Data.EntityFrameworkCore -OutputDir sakila -f
Visual Studioはプロジェクト内に新しいsakilaフォルダーを作成します。このフォルダーには、エンティティにマッピングされたすべてのテーブルとsakilaContext.csファイルが含まれます。
Oracleの指示では、Microsoft.EntityFrameworkCore.ToolsはEF Core 2.1には不要であると言っていましたが、EF 2.2と互換性のあるバージョン2.2.0をインストールしました
これは、Dino Espositoの著書「Programming ASP.NET Core」で見つけました。
'注CLIツールのこのバージョンは、アプリケーションが使用する.NET Coreランタイムのバージョンとは異なります。ランタイムバージョンはプロジェクトファイルで指定されており、選択したIDEのユーザーインターフェイス内から簡単に編集できます。代わりに、プロジェクトファイルを手動で編集する場合は、.csproj XMLファイルを編集してTargetFramework要素の値を変更するのと同じくらい簡単です。値は、バージョンを識別するモニカーを参照します(netcoreapp2.0など)。
私のために働いた解決策は、パッケージマネージャーコンソールで次のコマンドを実行することです。
PM> Install-Package Microsoft.EntityFrameworkCore -Version 2.1.11
PM> Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.11
私の場合、エラーメッセージのバージョンとバージョンが一致していることを確認してください。次のエラーが表示されます。
The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.11-servicing-32099'. Update the tools for the latest features and bug fixes.
次のサイトから入手可能なバージョンを確認してください。 https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/