Необходимость обновления основных инструментов EF

Когда я использую инструменты dotnet ef в консоли диспетчера пакетов VS 2017, я получаю предупреждающее сообщение о необходимости обновления инструментов 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 в любом месте решения.

Ответы

Ответ 1

Я отбросил эту проблему в команду разработчиков на github. Оказывается, это известная проблема в существующих инструментах или пакетах nuget, которые загружаются при создании основного сайта AspNet Core EF Core. Он нацелен на исправление в будущем выпуске.

На данный момент обходным путем является просто игнорировать предупреждение.

Также предлагается другое обходное решение, включающее в себя настройку файла csproj для определения версии метапакета AspNet Core явно - до 2,1,3, поскольку я пишу это, но я не мог получить такой подход к работе; Я все еще продолжал получать предупреждающее сообщение.

Ответ 2

Попробуйте это: Install-Package Microsoft.EntityFrameworkCore.Tools

Если проблема все еще возникает, выполните это также: Update-Package Microsoft.EntityFrameworkCore.Tools

Ответ 3

Установите новую версию.NET Core SDK v2.1.401 и проверьте> dotnet ef --version еще раз. У меня была такая же проблема, и в моем случае это сработало. Кроме того, вам не нужно добавлять Microsoft.EntityFrameworkCore.Tools.DotNet.

Ответ 4

Моим решением было установить инструмент dotnet-ef из microsoft https://www.nuget.org/packages/dotnet-ef. Он использует те же команды, но без предупреждений. Изменение заключается в использовании dotnet-ef вместо dotnet ef.

Ответ 5

Я не мог найти, как обновить пакет специально, но в консоли диспетчера пакетов я запустил пакет обновления. Он прошел через и обновил все пакеты, на которые ссылается проект, включая основные инструменты EF. Это может быть не идеально для вас, поскольку это может обновить пакеты, которые вам не нужны.

Ответ 6

  • Игнорировать проблему
  • Не обновляйте <PackageReference Include = "Microsoft. EntityFrameworkCore. Tools" Version = ""/>
  • В моем случае я перешел к "Update-Database -Context MyElementContext", и теперь все работает нормально.

Я нашел это в книге "Программирование ASP.NET Core" Дино Эспозито.

'Примечание. Эта версия инструментария CLI отличается от версии среды выполнения .NET Core, которую будет использовать приложение. Версия среды выполнения указана в файле проекта, и вы можете удобно редактировать ее в пользовательском интерфейсе IDE по вашему выбору. Если вы хотите вместо этого отредактировать файл проекта вручную, то это так же просто, как отредактировать XML файл .csproj и изменить значение элемента TargetFramework. Значение относится к прозвищу, которое идентифицирует версию (например, netcoreapp2.0). '

Ответ 7

Выполнение шагов в этом документе помогло мне решить проблему - https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-scaffold-example.html

Создание базы данных с помощью консоли диспетчера пакетов в Visual Studio

  • Откройте Visual Studio и создайте новое консольное приложение (.NET Core) для С#.
  • Добавьте пакет MySQL NuGet для EF Core с помощью консоли диспетчера пакетов. Например, используйте следующую команду для добавления пакета MySql.Data.EntityFrameworkCore v8.0.13:

Пакет установки MySql.Data.EntityFrameworkCore -Version 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" />
    

    Откройте Консоль диспетчера пакетов и введите в командной строке следующую команду, чтобы создать сущности и DbContext для базы данных sakila (измените значения строки подключения, чтобы они соответствовали вашим настройкам для параметров user = и password =):

Scaffold-DbContext "server = localhost; порт = 3306; пользователь = root; пароль = mypass; база данных = sakila" MySql.Data.EntityFrameworkCore -OutputDir sakila -f

Visual Studio создает новую папку sakila внутри проекта, которая содержит все таблицы, сопоставленные с сущностями, и файл sakilaContext.cs.

Хотя в инструкциях Oracle сказано, что Microsoft.EntityFrameworkCore.Tools не требуется для EF Core 2.1, я установил версию 2.2.0, совместимую с EF 2.2.

Ответ 8

Решение, которое сработало для меня, заключается в запуске следующих команд в консоли диспетчера пакетов:

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/