dbcontext   Commands to manage DbContext types.

  migrations  Commands to manage migrations.

Use "dotnet ef [command] --help" for more information about a command.

Использование: dotnet ef [параметры] [команда]

Параметры:

    --version                Показать информацию о версии.

    -h|--help                Показать справочную информацию.

    -v \--verbose           Включить многословный вывод.

    --no-color               Не использовать цвета в выводе.

    --prefix-output       Снабжать вывод префиксами для выделения уровней.

Команды:

    database                  Команды для управления базой данных.

    dbcontext                Команды для управления типами DbContext.

    migrations               Команды для управления миграциями.

Для получения дополнительной информации о команде применяйте dotnet ef [команда] --help.

В табл. 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 — это не команды С#, а потому правила отмены символов обратной косой черты и кавычек здесь не применяются.

<p id="AutBody_Root941"><strong>Команды для управления миграциями</strong></p>

Команды migrations используются для добавления, удаления, перечисления и создания сценариев миграций. После того, как миграция применена к базе данных, в таблице __EFMigrationsHistory создается запись. Команды для управления миграциями кратко описаны в табл. 22.11 и более подробно в последующих подразделах.

<p id="AutBody_Root942"><strong>Команда add</strong></p>

Команда add создает новую миграцию базы данных, основываясь на текущей объектной модели. Процесс исследует каждую сущность со свойством DbSet в производном от DbContext классе (и каждую сущность, которая может быть достигнута из таких сущностей с использованием навигационных свойств) и выясняет, есть ли какие-то изменения, которые должны быть применены к базе данных. При наличии изменений генерируется надлежащий код для обновления базы данных. Вскоре вы узнаете об этом больше.

Перейти на страницу:

Похожие книги