Ядро EF: каркас DbContext продолжает выходить из строя

#c# #asp.net-mvc #entity-framework

#c# #asp.net-mvc #entity-framework

Вопрос:

Официальный ASP.Net Core говорит, что следующую ошибку можно исправить, перезапустив Visual Studio:

  Scaffold-DbContext : The term 'Scaffold-DbContext' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
  

Однако команда продолжает завершаться сбоем.

Я запускаю его в консоли диспетчера пакетов, следуя примеру, приведенному в ASP.Net основная онлайновая документация.

 Scaffold-DbContext "Server=(localdb)mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
  

Комментарии:

1. Пожалуйста, попробуйте выполнить команду в окне PowerShell (сначала перейдите в папку проекта)

Ответ №1:

Я столкнулся с той же проблемой. Для меня это был EntityFrameworkCore.Инструменты, которые отсутствовали и неправильно устанавливались через NuGet.

Запустите эти команды в консоли диспетчера пакетов ( Tools > NuGet Package Manager > Package Manager Console ):

 Install-Package Microsoft.EntityFrameworkCore.SqlServer –Pre 
Install-Package Microsoft.EntityFrameworkCore.Tools –Pre 
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design –Pre
  

А затем в project.json я добавил это:

 "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
}
  

Важно!Убедитесь, что эта версия соответствует пакету «dependencies» (также в project.json). В этом примере «1.1.0-preview4-final» также следует использовать в зависимостях.

Если проблема все еще сохраняется, попробуйте восстановить время выполнения ef, руководство найдено здесь: https://github.com/aspnet/EntityFramework/issues/5549

Ответ №2:

Это то, с чего я начинаю при создании нового ASP.NET Проект Core 1.1, который экономит мне много времени. Если вы выполнили шаг 1, а шаг 2 не сработал сразу, попробуйте перезапустить Visual Studio и перейти к шагу 2.

Шаг 1

Используйте следующее в качестве project.json. Восстановление пакетов.

 {
  "version": "1.0.0-*",

  "dependencies": {
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
    "Microsoft.EntityFrameworkCore": "1.1.0",
    "Microsoft.EntityFrameworkCore.Design": "1.1.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
    "NETStandard.Library": "1.6.1",
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.1.0"
    }
  },
  "frameworks": {
    "netcoreapp1.1": {
      "imports": "dnxcore50"
    }
  },
  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
  }
}
  

Шаг 2

Запустите запрос в консоли диспетчера пакетов. Приведенный ниже запрос подключается к базе данных TestDb на сервере тестирования

 Scaffold-DbContext "Data Source=TestServer;Initial Catalog=TestDb;Persist Security Info=True;User ID={Username};Password={Password}" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -force -v -t dbo.Table1, dbo.Table2, dbo.Table3