dbcontext Commands to manage DbContext types.
migrations Commands to manage migrations.
Use "dotnet ef [command] --help" for more information about a command.
В табл. 22.9 описаны три основных команды глобального инструмента EF Core. С каждой основной командой связаны дополнительные подкоманды. Как и все команды .NET Core, каждая команда имеет развитую справочную систему, которая доступна после ввода -h вместе с командой.
Команды EF Core выполняются в отношении файлов проектов .NET Core (не файлов решений). Целевой проект должен ссылаться на пакет NuGet инструментов EF Core по имени Microsoft.EntityFrameworkCore.Design. Команды работают с файлом проекта, расположенным в том же каталоге, где команды вводятся, или с файлом проекта из другого каталога в случае ссылки на него через параметры командной строки.
Для команд CLI глобального инструмента EF Core, которым требуется экземпляр класса, производного от DbContext (Database и Migrations), при наличии в проекте только одного такого экземпляра именно он и будет использоваться. Если экземпляров DbContext несколько, тогда конкретный экземпляр необходимо указывать в параметре командной строки. Экземпляр производного от DbContext класса будет создаваться с применением экземпляра класса, реализующего интерфейс IDesignTimeDbContextFactory, если инструмент смог его обнаружить.
Если инструменту не удалось его найти, то экземпляр класса, производного от DbContext, будет создаваться с использованием конструктора без параметров. Если ни того и ни другого не существует, тогда команда потерпит неудачу. Обратите внимание, что вариант с конструктором без параметров требует наличия переопределенной версии OnConfiguring(), что не считается хорошей практикой.
Лучший (и на самом деле единственный) вариант — всегда создавать реализацию IDesignTimeDbContextFactory для каждого класса, производного от DbContext, который присутствует в приложении.
Чтобы вывести список всех аргументов и параметров для команды, введите dotnet ef <команда> -h в окне командной строки, например:
dotnet ef migrations add -h
На заметку! Важно отметить, что команды CLI — это не команды С#, а потому правила отмены символов обратной косой черты и кавычек здесь не применяются.
Команды для управления миграциями
Команды migrations используются для добавления, удаления, перечисления и создания сценариев миграций. После того, как миграция применена к базе данных, в таблице __EFMigrationsHistory создается запись. Команды для управления миграциями кратко описаны в табл. 22.11 и более подробно в последующих подразделах.
Команда add
Команда add создает новую миграцию базы данных, основываясь на текущей объектной модели. Процесс исследует каждую сущность со свойством DbSet в производном от DbContext классе (и каждую сущность, которая может быть достигнута из таких сущностей с использованием навигационных свойств) и выясняет, есть ли какие-то изменения, которые должны быть применены к базе данных. При наличии изменений генерируется надлежащий код для обновления базы данных. Вскоре вы узнаете об этом больше.