EF7 RC1 термин 'Scaffold-DbContext' не распознается
Я пытаюсь использовать EF7 RC1 для построения каркаса из существующей базы данных, следуя инструкциям на странице
https://media.readthedocs.org/pdf/ef/latest/ef.pdf
Когда я выполняю команду из консоли диспетчера пакетов
Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -connection "Server=(localdb)MSSQLLocalDB;Initial Catalog=Clients_Local;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
Я получаю эту ошибку
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.
At line:1 char:1
+ Scaffold-DbContext -provider EntityFramework.MicrosoftSqlServer -conn ...
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Scaffold-DbContext:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Мой проект.json выглядит так
{
"userSecretsId": "aspnet5-WebApplication1-1702fb51-ff21-46b5-8685-eb0834dd86f0",
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
],
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
}
}После изучения этого вопроса я удалил содержимое C:Users.dnxbin и обновленный dnvm с помощью
https://github.com/aspnet/Home#cmdНо я все еще получаю ту же ошибку.
3 ответов:
Похоже, что вы должны использовать команду dnx, а не консоль диспетчера пакетов, как описано в документации RC1 здесь: http://docs.efproject.net/en/latest/getting-started/aspnet5/existing-db.html
Обновление: документы EF немного перемещаются. Команду dnx теперь можно найти здесь: http://docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html
В случае, если он снова перемещается, вот соответствующая команда:
dnx ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" EntityFramework.MicrosoftSqlServer --outputDir Models
Для RC2 изменился синтаксис / CLI. Вы можете в основном следовать инструкциям здесь: https://docs.efproject.net/en/latest/platforms/aspnetcore/existing-db.html , но мне пришлось использовать эти команды вместо того, чтобы генерировать леса.
Я запустил их из командной строки, а не из консоли диспетчера пакетов.
Это можно использовать для проверки аргументов и опций:
dotnet ef dbcontext scaffold --helpПример:
dotnet ef dbcontext scaffold "Server=(LocalDB)\MSSQLLocalDB;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -c BloggingContext -o BloggingModels
Я обнаружил, что правильным решением было установить Powershell 5 и перезагрузиться. Обратите внимание, что команда DNX также была заменена командой dotnet.
Comments