- dotnet ef не найден в .NET Core 3
- Инструмент dotnet ef больше не является частью .NET Core SDK
- Зачем
- Команда добавления-миграции ASP.NET Core EF не работает
- 6 ответов
- ASP.NET Core Что за ошибка при Add-Migration Initial?
- Учебник. Часть 5. Применение миграций к примеру приложения университета Contoso
- Предварительные требования
- Сведения о миграциях
- Удалите базу данных:
- Создание первоначальной миграции
- Обзор методов Up и Down
- Моментальный снимок модели данных
- Применение миграции
- Сравнение CLI и PMC
- Получение кода
- Следующий шаг
- Ошибка сборки надстройки EF Core-миграции
- 14 ответов
dotnet ef не найден в .NET Core 3
Я слежу за документами , чтобы создать начальную миграцию. Когда я выполняю dotnet , я получаю раздел помощи, означающий, что PATH работает правильно.
Затем я пытаюсь выполнить команду ниже из документов в окне консоли:
Я получаю следующую ошибку:
- Я исключил первый элемент, так как скопировал команду.
- Второй пункт я исключил, потому что установлен пакет Microsoft.EntityFrameworkCore.SqlServer .
- Я исключил третий пункт, потому что при вызове dotnet я получаю раздел справки .
Я ищу проблему в Google, но, поскольку версия новая, особо нечего делать и / или она тонет в аналогичных проблемах из более ранних версий.
Я попытался принудительно установить Microsoft.EntityFrameworkCore на случай, если его нужно явно добавить. Я столкнулся с сообщением об ошибке, в котором говорилось, что последняя версия для выбора — 2.2.6, и переход на более раннюю версию запрещен. Я не уверен, как установить версию, совместимую с SQL-пакетом, который у меня уже есть в моей системе (и даже менее уверен, что это правильный подход для устранения этой проблемы).
Обнаружено понижение версии пакета: Microsoft.EntityFrameworkCore с 3.0.0-preview6.19304.10 на 2.2.6. Ссылка на пакет прямо из проекта, чтобы выбрать другую версию.
Интернет ->
Microsoft.EntityFrameworkCore.SqlServer 3.0.0-preview6.19304.10 ->
Microsoft.EntityFrameworkCore.Relational 3.0.0-preview6.19304.10 ->
Microsoft.EntityFrameworkCore (> = 3.0.0-preview6.19304.10)
Интернет -> Microsoft. EntityFrameworkCore (> = 2.2.6)
См. Объявление для ASP.NET Core 3 Preview 4, в котором объясняется, что этот инструмент больше не является встроенным и требует явной установки:
Инструмент dotnet ef больше не является частью .NET Core SDK
Это изменение позволяет нам поставлять dotnet ef как обычный инструмент .NET CLI, который может быть установлен как глобальный, так и локальный инструмент. Например, чтобы иметь возможность управлять миграциями или формировать шаблон a DbContext , установите dotnet ef как глобальный инструмент, введя следующую команду:
Чтобы установить определенную версию инструмента, используйте следующую команду:
Причина изменения объясняется в документации :
Зачем
Это изменение позволяет нам распространять и обновлять dotnet ef как обычный инструмент .NET CLI на NuGet, в соответствии с тем фактом, что EF Core 3.0 также всегда распространяется как пакет NuGet.
Кроме того, вам может потребоваться добавить в проект следующие пакеты NuGet:
Источник
Команда добавления-миграции ASP.NET Core EF не работает
Следуя этому учебнику Microsoft, когда Я запускаю команду PM> Add-Migration MyFirstMigration в проекте VS2015, созданном из того же руководства, и получаю следующую ошибку, которую не могу устранить:
Найдено более одного контекста DbContext. Укажите, какой из них использовать.
Используйте параметр ‘-Context’ для команд PowerShell и Параметр —context для команд dotnet.
Указать на заметку
- Я использую вышеприведенное руководство, за исключением того, что я использую аутентификацию Individual User Account вместо No Authentication , используемой в руководстве.
- У меня последний выпуск ASP.NeT Core 1.0 and VS2015-Update 3 on windows 8.1
- Это только что созданный проект. Никакой другой DbContext не был установлен вручную
6 ответов
Выполнение следующей команды (полученной из этой статьи) и ответ от @Maverik (из StackOverflow здесь) и предложение от @doctor выше помогло мне решить проблему. . Спасибо за вашу помощь:
Ошибка ясно объясняет упоминание —context с именем контекста db, если более одного DbContext. Поэтому попробуйте упомянуть свое имя DbContext.
Надеюсь это поможет.
Это потому, что в вашем решении есть два DbContext. Первый по умолчанию создается при создании проекта (ApplicationDbContext), а второй — ваш EF DbContext. Решение описано в сообщении об ошибке, просто укажите свой EF DbContext
Можно ли иметь в проекте более одного контекста? Я спрашиваю, нормально ли при использовании аутентификации индивидуальной учетной записи иметь в моем проекте два DbContext.
Если вам нужно только обновить существующую схему идентификации, попробуйте:
ApplicationDbContext = ваш контекст идентификации
Add-Migration MyFirstMigration -Context DbContextName
Источник
ASP.NET Core Что за ошибка при Add-Migration Initial?
Доброго времени суток, уважаемые знатоки.
Решил заняться изучением C# и ASP.NET Core и в ознакомительных целях стал делать урок.
Вот ссылка на него:
https://docs.microsoft.com/ru-ru/aspnet/core/tuto.
Все предыдущие шаги, естественно выполнены.
И застрял я на Add-Migration Initial
При вводе этой команды, получаю такую ошибку:
Встречал похожую проблему на просторах интернета, но решения какого-то конкретного не нашел.
Скачал с гитхаба этот же урок, он заработал без проблем.
В чем же проблема?
- Вопрос задан более трёх лет назад
- 1569 просмотров
Роман, спасибо, что откликнулись!
Изначально, как и в примере, у меня было так:
Попробовал Ваш вариант, но увы ошибка та же :((
Роман, Я сделал всё точь-в-точь как Вы написали, но результат тот же 🙁
Перепробовав кучу комбинаций, я скопировал Startup.cs и appsettings.json из примера, схема для базы снова не создалась, вылетев с той же ошибкой. Но эти манипуляции позволили создать шаблоны страниц модели.
Роман, спасибо Вам за помощь!
Чтобы выявить проблему, попробуйте несколько простых шагов:
1)
appsettings.json
Если не помогло, попробуйте без метода расширения подключить:
2)
Источник
Учебник. Часть 5. Применение миграций к примеру приложения университета Contoso
В этом руководстве вы начинаете использовать функцию миграций EF Core для управления изменениями модели данных. В последующих руководствах вы добавите дополнительные миграции по мере изменения модели данных.
Изучив это руководство, вы:
- Дополнительные сведения о миграциях
- Создание первоначальной миграции
- Обзор методов Up и Down
- Дополнительные сведения о моментальном снимке модели данных
- Применение миграции
Предварительные требования
Сведения о миграциях
При разработке нового приложения ваша модель данных часто меняется, и при каждом таком изменении она нарушает синхронизацию с базой данных. Вы начали работу с этими руководствами, настроив Entity Framework для создания базы данных, если она еще не существует. Затем при каждом изменении модели данных — добавлении, удалении или изменении классов сущностей или изменении класса DbContext — вы можете удалить базу данных, после чего EF создает новую, которая соответствует данной модели, и заполняет ее тестовыми данными.
Этот способ для обеспечения синхронизации базы данных с моделью данных хорошо работает до развертывания приложения в рабочей среде. Когда приложение выполняется в рабочей среде, оно обычно хранит данные, которые вы хотите сохранить, и вам нежелательно терять все при каждом изменении, например при добавлении нового столбца. Функция миграций EF Core решает эту проблему, позволяя EF обновить схему базы данных вместо создания базы данных.
Для миграции можно использовать консоль диспетчера пакетов (PMC) или CLI. Эти руководства демонстрируют использование команд интерфейса командной строки. Дополнительные сведения о PMC приведены в конце этого руководства.
Удалите базу данных:
Установите средства EF Core в качестве глобальных средств и удалите базу данных:
Следующий раздел описывает выполнение команд интерфейса командной строки.
Создание первоначальной миграции
Сохраните изменения и выполните сборку проекта. После этого откройте командное окно и в папку проекта. Вот как это можно сделать быстро:
Щелкните правой кнопкой мыши проект в обозревателе решений и выберите в контекстном меню пункт Открыть папку в проводнике.
Введите «cmd» в адресной строке и нажмите клавишу ВВОД.
Введите в командном окне следующую команду:
Приведенные выше команды выводят результат наподобие следующего:
Если отображается сообщение об ошибке «Доступ к файлу. ContosoUniversity.dll невозможен, так как файл используется другим процессом«, найдите значок IIS Express в области уведомлений Windows, щелкните его правой кнопкой мыши, а затем выберите ContosoUniversity > Остановить сайт.
Обзор методов Up и Down
При выполнении команды migrations add система EF сформировала код, который создаст базу данных с нуля. Этот код находится в файле _InitialCreate.cs внутри папки Migrations. Метод Up класса InitialCreate создает таблицы базы данных, которые соответствуют наборам сущностей модели данных, а метод Down удаляет их, как показано в следующем примере.
Функция миграций вызывает метод Up , чтобы реализовать изменения модели данных для миграции. При вводе команды для отката обновления функция миграций вызывает метод Down .
Этот пример кода предназначен для первоначальной миграции, созданной при вводе команды migrations add InitialCreate . Параметр имени миграции (в примере это «InitialCreate») используется в качестве имени файла и может быть любым. Рекомендуется выбрать слово или фразу, которые кратко описывают назначение миграции. Например, последнюю миграцию можно назвать «AddDepartmentTable».
Если вы создали первоначальную миграцию, когда база данных уже существовала, код для создания базы данных формируется, но выполнять его не требуется, так как база данных уже соответствует модели данных. Однако при развертывании приложения в другой среде, где база данных еще не существует, этот код будет выполняться для создания базы данных, поэтому рекомендуется сначала его протестировать. Вот почему ранее вы удалили базу данных — это позволяет функции миграций создать базу данных с нуля.
Моментальный снимок модели данных
Функция миграций создает моментальный снимок текущей схемы базы данных в Migrations/SchoolContextModelSnapshot.cs. При добавлении миграции EF определяет, что именно изменилось, сравнивая модель данных с файлом моментального снимка.
Для удаления миграции используйте команду dotnet ef migrations remove. dotnet ef migrations remove удаляет миграцию и гарантирует корректный сброс моментального снимка. В случае сбоя dotnet ef migrations remove используйте dotnet ef migrations remove -v , чтобы получить сведения об ошибке.
Дополнительные сведения об использовании файла моментального снимка см. в разделе Миграции Core EF в средах групп.
Применение миграции
Введите следующую команду в командном окне, чтобы создать базу данных и таблицы в ней.
Выходные данные команды аналогичны команде migrations add , за исключением того, что вы видите журналы для команд SQL, настраивающих базу данных. В приведенном ниже примере выходных данных большинство журналов опущено. Если вам не нужен такой уровень детализации сообщений журнала, можно изменить уровень ведения журнала в файле appsettings.Development.json. Дополнительные сведения см. в разделе Ведение журнала в .NET Core и ASP.NET Core.
Используйте обозреватель объектов SQL Server для проверки базы данных, как описано в первом руководстве. Вы заметите добавление таблицы __EFMigrationsHistory, отслеживающей миграции, которые были применены к базе данных. Просмотрев данные в этой таблице, вы увидите одну строку для первой миграции. (Последний журнал в предыдущем примере выходных данных интерфейса командной строки показывает оператор INSERT, создающий эту строку.)
Запустите приложение, чтобы убедиться, что все работает, как и раньше.
Сравнение CLI и PMC
Средства EF для управления миграциями доступны в виде команд интерфейса командной строки .NET Core или командлетов PowerShell в окне консоли диспетчера пакетов Visual Studio. Это руководство описывает использование интерфейса командной строки, но вы можете использовать и консоль диспетчера пакетов.
Команды EF для команд консоли диспетчера пакетов находятся в пакете Microsoft.EntityFrameworkCore.Tools. Этот пакет входит в метапакет Microsoft.AspNetCore.App, поэтому если приложение уже содержит ссылку на пакет Microsoft.AspNetCore.App , добавлять ссылку на пакет не нужно.
Внимание! Это не тот же пакет, который вы устанавливаете для CLI, изменив файл .csproj. Его имя заканчивается на Tools , а имя пакета интерфейса командной строки — на Tools.DotNet .
Дополнительные сведения о командах интерфейса командной строки см. в разделе .NET Core CLI.
Дополнительные сведения о командах консоли диспетчера пакетов см. в разделе Консоль диспетчера пакетов (Visual Studio).
Получение кода
Следующий шаг
В следующем учебнике описаны более сложные вопросы, связанные с развертыванием модели данных. Попутно вы создадите и примените дополнительные миграции.
Источник
Ошибка сборки надстройки EF Core-миграции
У меня есть разработчик, который получает » Build failed.»при запуске add-migration в проекте .NET Core EF без объяснения причины сбоя сборки. Как устранить эту ошибку?
вот что он получает в консоли диспетчера пакетов:
дополнительная информация:
У нас есть несколько других разработчиков, использующих тот же код решения (включая меня), у которых нет проблем с добавить-миграция.
Это то, что я вижу в консоли диспетчера пакетов:
мы проверили, что проект строит, и все решение строит. Мы сделали «восстановление dotnet» и перестроили все несколько раз, в дополнение к перезапуску VS2015. Мы проверили, что правильное решение по умолчанию выбрано как в обозревателе решений, так и в раскрывающемся списке консоль диспетчера пакетов. Мы проверили, что на его машине установлен правильный SDK. Я на потеря того, что проверить дальше. каждый раз, когда у меня был сбой во время add-migration, я получил достаточно информации, чтобы указать мне в направлении того, что нужно проверить, но просто «Build failed.»это довольно бесполезный вывод ошибок.
14 ответов
Это из-за других проектов решений. e.g если в решении есть два проекта: проект A и проект B. Если сборка проекта A не удалась, а затем миграция данных проекта B завершится неудачно. Поэтому вы должны выгрузить проект A и снова добавить миграцию в проект B.
Я думаю, что это не хороший ответ, но надеюсь, что это поможет.
У меня была точно такая же проблема (.NET Core 2.0.1).
иногда помогает, если проект будет восстановить.
Я также сталкиваюсь с проблемой, когда я открыл проект в 2 Visual studios.
Закрытие одной исправленной ошибки Visual Studio.
в моей ситуации это была ошибка
Я понял это, добавив флаг-v (или —verbose) в команду dotnet ef.
разработчик закончил un-mapping проект из TFS, удалив его и повторно сопоставив его. Теперь это работает на него.
У меня была такая же ошибка, но я использую Visual Studio Community 2017 версии 15.2 (26430.14) для создания проектов .Net Core.
У меня есть ASP.NET основной веб-проект MVC и отдельный проект безопасности с использованием ASP.NET основная идентичность. Веб-проект содержит строку подключения в aspsettings.конфигурационный файл json.
Я также установил Упаковщик & Английское Сокращение Cups и Web Essentials 2017 расширения в Visual Studio, чтобы я мог компилировать, минимизировать и соберите мои активы и поместите их в wwwroot.
Я понял, что это MSBuild эти расширения 2 тайно загружаются, что вызвало проблему, потому что у меня было включить Bundle on Build и включить компиляцию в Build on. После того, как я отключу это, все работает нормально.
вероятно, не причина вашей проблемы, но, возможно, стоит просто попробовать.
была такая же ситуация. Помог следующий:
- Открыть Консоль Диспетчера Пакетов
- каталог миграция: cd C:\YourSolution\YourProjectWithMigrations
- войдите в PM: dotnet ef migrations add YourMigrationName
Источник