Язык программирования C#9 и платформа .NET5
modelBuilder.Entity<Customer>(entity =>{entity.OwnsOne(o => o.PersonalInformation,pd =>{pd.Property<string>(nameof(Person.FirstName)).HasColumnName(nameof(Person.FirstName)).HasColumnType("nvarchar(50)");pd.Property<string>(nameof(Person.LastName)).HasColumnName(nameof(Person.LastName)).HasColumnType("nvarchar(50)");});<b> entity.Navigation(c => c.PersonalInformation).IsRequired(true);</b>});Существуют дополнительные аспекты для исследования с помощью принадлежащих сущностей, в том числе коллекции, разбиение таблиц и вложение, но они выходят за рамки тематики настоящей книги. За более подробной информацией о принадлежащих сущностях обращайтесь в документацию по EF Core:
.https://docs.microsoft.com/ru-ru/ef/core/modeling/owned-entitiesСопоставление с функциями базы данных
Функции SQL Server можно сопоставлять с методами C# и включать в операторы LINQ. В таком случае метод C# служит просто заполнителем, поскольку в генерируемый запрос SQL внедряется серверная функция. Поддержка сопоставления с табличными функциями была добавлена в EF Core к уже имеющейся поддержке сопоставления со скалярными функциями. Дополнительные сведения о сопоставлении с функциями базы данных ищите в документации:
.https://docs.microsoft.com/ru-ru/ef/core/querying/user-defined-function-mappingКоманды CLI глобального инструмента EF Core
Глобальный инструмент командной строки EF Core под названием
содержит команды, необходимые для создания шаблонов существующих баз данных в коде, для создания/удаления миграций баз данных и для работы с базой данных (обновление, удаление и т.п.). Чтобы пользоваться глобальным инструментомdotnet-ef, вы должны его установить с помощью следующей команды (если вы прорабатывали материал главы с самого начала, то уже сделали это):dotnet-efdotnet tool install -- global dotnet-ef — version 5.0.1На заметку! Из-за того, что EF Core 5 не является выпуском с долгосрочной поддержкой (LTS) при использовании глобальных инструментов EF Core 5 потребуется указывать версию.
Для проверки результата установки откройте окно командной строки и введите такую команду:
dotnet efЕсли глобальный инструмент был успешно установлен, тогда вы получите схематическое изображение единорога EF Core (талисмана команды разработчиков) и список доступных команд, подобный показанному ниже (на экране единорог выглядит лучше):
_/\__---==/ \\___ ___ |. \|\|__||__| | ) \\\|_||_| \_/ | //|\\|__||_| / \\\/\\Entity Framework Core .NET Command-line Tools 5.0.1Usage: dotnet ef [options] [command]Options:--version Show version information-h|--help Show help information-v|--verbose Show verbose output.--no-color Don't colorize output.--prefix-output Prefix output with level.Commands:database Commands to manage the database.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<TContext>
