Ответ 1
Вы пытались удалить и переустановить пакет EntityFramwork NuGet? У меня была такая же проблема, как описано, и она решила ее.
Я начал новый проект MVC с EntityFramework -Version 6.1.2
, используя последнее обновление Visual Studio 2013. Я сделал пару миграций и обновил базу данных. После этого я проверил проект на другом компьютере и открыл его с помощью Visual Studio 2015 CTP 6.
Если я зашел в консоль диспетчера пакетов и попытаюсь выполнить любые команды миграции, они не будут распознаны:
add-migrations: термин "добавления-миграции" не распознается как имя командлета, функции, файла script или исполняемой программы. Проверьте правильность написания имени или если путь был включен, проверьте правильность пути и повторите попытку.
Как я могу управлять своими миграциями с помощью Entity Framework 6 в Visual Studio 2015?
Вы пытались удалить и переустановить пакет EntityFramwork NuGet? У меня была такая же проблема, как описано, и она решила ее.
ОК, поэтому у меня возникла проблема с проектом EF6, который я начал в VS2013 и обновлен до VS2015 RC. Команды были доступны, если я открыл его в VS2013, но не в VS2015. То, что я нашел для решения проблемы быстро и легко, заключалось в использовании команды переустановить пакет:
Update-Package –reinstall EntityFramework
Это фиксировало любую команду отсутствующих ошибок, а затем разрешило мне запускать обновления баз и создавать новые миграции в VS2015.
У меня были похожие проблемы, так как я не смог запустить 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/..., но по совершенно другим причинам.
Обновление-пакет EntityFramework... должен сделать трюк.
Я делал все комбинации переустановки или удаления и установки EntityFramework плюс закрытие и повторное открытие VS. Единственное, что сработало, это удаление пакетов папок в папке моего решения и перестроение решения, чтобы принудительно загрузить все пакеты.
Я проверил несколько проверок, но я расскажу о том, чтобы охватить весь сценарий 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 и начало работы над ним может привести к этой проблеме, которая волшебным образом исчезает, когда по какой-либо причине пакет устанавливается.