Подтвердить что ты не робот

Как я могу выполнить проект Core Entity Framework и добавить Migration в Visual Studio 2015 из приглашения nuget?

В Visual Studio 2015 я создал проект ASP.net Core (ранее называвшийся ASP.NET 5). Шаблон для проекта создает локальную базу данных MS SQL для сохранения, наряду с инфраструктурой сущностей и некоторыми таблицами аутентификации.

После того, как я выяснил, как просматривать базу данных localdb, созданную для этого проекта, я решил попробовать изменить модельный объект и попытаться выполнить Первую миграцию кода с помощью примера образца шаблона веб-сайта ASP.NET MVC. Он использует EF, чтобы обеспечить постоянство входа в localdb. Я попытался использовать

В демонстрационном приложении уже есть папка Migrations. Но если вы введете add-migration SomeNameHere в консоль диспетчера пакетов или enable-migrations, кажется, что невозможно работать с ER-мигрантами с образцовыми проектами.

Я добавил свойство string в блок IdentityModel.cs, и я попытался вручную добавить его вручную в файл 0000...IdentitySchema.cs, но, очевидно, я не знаю, как это сделать правильно, как при запуске приложения, Я получил некоторые ошибки, показанные ниже. Я считаю, что мне нужно, чтобы вначале инструмент Entity Framework с кодом сгенерировал блок скелета .cs, который перейдет в папку Migrations.

Обычные вещи, которые люди предлагают сделать, это:

  • Убедитесь, что вы запускали администратор. (Готово)
  • Убедитесь, что вы удалили платформу Entity Framework и переустановили ее в Решение, в котором вы хотите, чтобы он был активен (Готово).

Переустановка была похожа на консоль диспетчера пакетов:

PM> Uninstall-Package EntityFramework
Uninstalling NuGet package EntityFramework.7.0.0-beta4.
Successfully uninstalled 'EntityFramework.7.0.0-beta4' from WebApplicationDNX.
PM> Install-Package EntityFramework -IncludePrerelease
Installing NuGet package EntityFramework.7.0.0-beta4.
Successfully installed 'EntityFramework.7.0.0-beta4' to WebApplicationDNX.
PM> 

Здесь я считаю, что делаю ошибку, потому что я пытаюсь запустить команду, например add-migration, и я не могу этого сделать. Оказывается, это никогда не поддерживалось для меня, чтобы попробовать такие вещи:

PM> add-migration DummyMigrate
add-migration : The term 'add-migration' is not recognized as the name of a cmdlet, function, script file, or operable program. .... 
PM> enable-migration
enable-migration : The term 'enable-migration' is not recognized as the name of a cmdlet, function, script file, or operable program. 
...

Возможно ли, чтобы миграция фреймворка сущности работала из Visual Studio 2015, из приложения на основе шаблона ASP.NET 5 Preview Templates -> Web Site?

(обновления от 1 до 4 удалены, поскольку они предназначены для бесполезных исторических бета-версий)

Обновление 5: В asp.net core 1.0.0-RC2 инструмент dnx исчез, заменен на dotnet, но основной принцип, что команда dotnet ef должна запускаться из исходного каталога проекта не из каталога решений, и для этого вам, вероятно, следует использовать внешнюю командную строку или использовать PowerShell Tools для Visual Studio, а не приглашение командной строки nuget.

   solution-dir           project-source-dir
         |                       |
d:\dev\AspNetCoreWebAp\src\AspNetCoreWebAp>dotnet ef
Project AspNetCoreWebAp (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling AspNetCoreWebAp for .NETCoreApp,Version=v1.0
Compilation succeeded.
    0 Warning(s)
    0 Error(s)
Time elapsed 00:00:03.0846647

                     _/\__
               ---==/    \\
         ___  ___   |.    \|\
        | __|| __|  |  )   \\\
        | _| | _|   \_/ |  //|\\
        |___||_|       /   \\\/\\
Entity Framework .NET Core CLI Commands 1.0.0-preview1-20901
Usage: dotnet ef [options] [command]

введите описание изображения здесь

4b9b3361

Ответ 1

Вы пропустили шаг. Из документации в то время, когда ваша бета-версия 8 была активной, отсутствовала команда:

Install-Package EntityFramework.Commands -Pre, чтобы сделать команды миграции доступными в вашем проекте.

Commands были перенесены в отдельный пакет, предположительно, чтобы сделать основную структуру более легкой для производства, где вы не можете использовать и не нуждаетесь в утилитах командной строки.

Answer-Update-contrib-by-Warren: в Asp.net core 1.0.0-RC2 соответствующий пакет называется Microsoft.EntityFrameworkCore.Tools, и он, похоже, является частью шаблона веб-приложения ASP.Net Core, создавая исходную проблему вряд ли произойдет, если кто-то на самом деле не повредит их project.json. Команды миграции командной строки "EF" не должны запускаться из консоли диспетчера пакетов, которая НЕ является общей средой для команд DOTNET.

Ответ 2

Следующее применимо только к dnx, который был частью ASP.NET Core RC1. Это было заменено и не применимо к части ядра ASP.NET.

Отвечая на ваши вопросы относительно лучшего способа, которым вы хотите запустить команду dnx:

Моя команда dnx также выдавала ошибку.

Термин "dnx" не распознается как имя командлета, функции,

в моей консоли менеджера пакетов Visual Studio и в Windows PowerShell.

После многих разочарований я смог его решить.

Вот шаги, которые я сделал, чтобы заставить его работать

  • Закройте все экземпляры Visual Studio
  • Удалите папку .dnx в папке C:\Users\YOURUSERNAME \.dnx. Шахта была более 1 ГБ.
  • Откройте Visual Studio 2015. Создайте новый шаблон по умолчанию ASP.NET 5 Web Application. Создайте и запустите его. Это воссоздает папку .dnx. Впоследствии размер папки был около 600 МБ.
  • Open Powershell
  • Перейдите в каталог .dnx bin

    cd\
    cd users\YOURUSERNAME\.dnx\bin
    
  • Запустите команду

    .\dnvm upgrade
    

    Если у вас есть сообщение об ошибке, "выполнение сценариев в этой системе отключено". затем выполните следующую команду, чтобы сначала дать вам разрешение

    Set-ExecutionPolicy RemoteSigned
    

Откройте Open Visual Studio. Затем вы сможете ввести команду dnx в консоли диспетчера пакетов и powershell

   dnx

и он распознает его

введите описание изображения здесь