web-dev-qa-db-ja.com

EFコアツールを更新する必要がある

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ファイルがありません。

26
Mark Olbert

この問題を githubの開発チーム にバウンスしました。これは、EF Coreを使用したAspNet Coreサイトの作成時に読み込まれる現在のツールパッケージまたはnugetパッケージの 既知の問題 であることが判明しました。将来のリリースで修正される予定です。

今のところ、回避策は単に警告を無視することです。

別の回避策も提供されています。csprojファイルを調整して、AspNet Coreメタパッケージのバージョンを明示的に定義します。これを書いている時点では2.1.3までですが、そのアプローチを実現できませんでした。警告メッセージは引き続き表示されます。

18
Mark Olbert

これを試してください:Install-Package Microsoft.EntityFrameworkCore.Tools

それでも問題が発生する場合は、これも実行してください:pdate-Package Microsoft.EntityFrameworkCore.Tools

3
Lemraj

新しい.NET Core SDK v2.1.401バージョンをインストールし、再度dotnet ef --versionを確認します。私は同じ問題を抱えていましたが、私の場合はうまくいきました。また、Microsoft.EntityFrameworkCore.Tools.DotNetを追加する必要はありません。

2
surbaniak

私の解決策は、Microsoftからdotnet-efツールをインストールすることでした https://www.nuget.org/packages/dotnet-ef 。同じコマンドを使用しますが、警告は使用しません。変更点は、dotnet efの代わりにdotnet-efを使用することです。

1
joakimja

パッケージを具体的に更新する方法を見つけることができませんでしたが、パッケージマネージャーコンソールで 'update-package'を実行しました。 EF Core Toolsを含む、プロジェクトで参照されるすべてのパッケージを実行して更新しました。望まないパッケージを更新する可能性があるため、これは理想的ではありません。

0
malckier

このドキュメントの手順に従うことで問題を解決できました- https://docs.Oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html

Visual Studioのパッケージマネージャーコンソールを使用したデータベースのスキャフォールディング

  • Visual Studioを開き、C#用の新しいコンソールアプリ(.NET Core)を作成します。
  • パッケージマネージャーコンソールを使用して、EF Core用のMySQL NuGetパッケージを追加します。たとえば、次のコマンドを使用してMySql.Data.EntityFrameworkCore v8.0.13パッケージを追加します。

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をインストールしました

  • 問題を無視する
  • <PackageReference Include = "Microsoft。EntityFrameworkCore。Tools" Version = "" />を更新しないでください。
  • 私の場合、「Update-Database -Context MyElementContext」に進みましたが、現在はすべて正常に機能しています。

これは、Dino Espositoの著書「Programming ASP.NET Core」で見つけました。

'注CLIツールのこのバージョンは、アプリケーションが使用する.NET Coreランタイムのバージョンとは異なります。ランタイムバージョンはプロジェクトファイルで指定されており、選択したIDEのユーザーインターフェイス内から簡単に編集できます。代わりに、プロジェクトファイルを手動で編集する場合は、.csproj XMLファイルを編集してTargetFramework要素の値を変更するのと同じくらい簡単です。値は、バージョンを識別するモニカーを参照します(netcoreapp2.0など)。

0
GioLopera

私のために働いた解決策は、パッケージマネージャーコンソールで次のコマンドを実行することです。

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/

0
Patee Gutee