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

Как я могу управлять миграциями EF 6 в visual studio 2015?

Я начал новый проект MVC с EntityFramework -Version 6.1.2, используя последнее обновление Visual Studio 2013. Я сделал пару миграций и обновил базу данных. После этого я проверил проект на другом компьютере и открыл его с помощью Visual Studio 2015 CTP 6.

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

add-migrations: термин "добавления-миграции" не распознается как имя командлета, функции, файла script или исполняемой программы. Проверьте правильность написания имени или если путь был включен, проверьте правильность пути и повторите попытку.

Как я могу управлять своими миграциями с помощью Entity Framework 6 в Visual Studio 2015?

4b9b3361

Ответ 1

Вы пытались удалить и переустановить пакет EntityFramwork NuGet? У меня была такая же проблема, как описано, и она решила ее.

Ответ 2

ОК, поэтому у меня возникла проблема с проектом EF6, который я начал в VS2013 и обновлен до VS2015 RC. Команды были доступны, если я открыл его в VS2013, но не в VS2015. То, что я нашел для решения проблемы быстро и легко, заключалось в использовании команды переустановить пакет:

Update-Package –reinstall EntityFramework

Это фиксировало любую команду отсутствующих ошибок, а затем разрешило мне запускать обновления баз и создавать новые миграции в VS2015.

Ответ 3

У меня были похожие проблемы, так как я не смог запустить Add-Migration из консоли диспетчера пакетов (хотя у меня была другая ошибка). К сожалению, переустановка EntityFramework не работала для меня, возможно, потому, что у меня был ASP.NET 5 проектов в одном решении. (Это не было для традиционного csproj, так как для него требуется resx, который не поддерживается, насколько мне известно.)

В итоге я создал консольное приложение, ссылающееся на проект, включающий мои миграции, и добавил следующее:

    var configuration = GetConfiguration();

    var scaffolder = new MigrationScaffolder(configuration);

    scaffolder.Namespace = configuration.MigrationsNamespace;

    var scaffoldedMigration = scaffolder.Scaffold(name);

    System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".cs", scaffoldedMigration.UserCode);
    System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".Designer.cs", scaffoldedMigration.DesignerCode);
    System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".resx", BuildResx(scaffoldedMigration.Resources));

GetConfiguration возвращает экземпляр вашего класса *.Migration.Configuration. name - новое имя вашей миграции. Этот код по умолчанию переносит его в папку Debug вашего консольного приложения; перетащите туда-сюда в Visual Studio в папку Migration, и он должен сделать трюк.

Позже я обнаружил, что это в основном то же самое, что fooobar.com/questions/491663/..., но по совершенно другим причинам.

Ответ 4

Обновление-пакет EntityFramework... должен сделать трюк.

Ответ 5

Я делал все комбинации переустановки или удаления и установки EntityFramework плюс закрытие и повторное открытие VS. Единственное, что сработало, это удаление пакетов папок в папке моего решения и перестроение решения, чтобы принудительно загрузить все пакеты.

Ответ 6

Я проверил несколько проверок, но я расскажу о том, чтобы охватить весь сценарий ef:

ef7 в проекте asp.net 5: управление миграциями было изменено и теперь выполняется с помощью команды ef migration.
ef7 в традиционном приложении .net: он требовал фреймворка 4.5.1, но на этой странице esing ef 7 в приложении .net вы можете найти хорошее руководство по использованию ef 7 в традиционном приложении. Важно добавить пакет EntityFramework.Commands.
ef6: не работает с asp.net 5, поэтому даже вы можете его установить, сборка будет нарушена. Такая же ситуация для большинства реальных драйверов ef, как для mongodb и Postgresql. Если вы не уверены, что это совместимый с ef 7 драйвер, не устанавливайте его. На данный момент я думаю, что вы можете рассчитывать только на sqlserver и inMemory.
для приложений asp.net 4 фактическая установка команд является частью самого пакета фреймворка сущности, поэтому он будет установлен при первой установке пакета (как справедливо указано выше).
В некоторых ситуациях в среде, где пакет ef не был установлен, копирование проекта asp.net 4 и начало работы над ним может привести к этой проблеме, которая волшебным образом исчезает, когда по какой-либо причине пакет устанавливается.