Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]GO<b>ALTER TABLE [dbo].[CarDriver]</b><b>WITH CHECK ADD CONSTRAINT [FK_CarDriver_Cars_CarsId] FOREIGN </b><b>KEY([CarsId])</b><b>REFERENCES [dbo].[Cars] ([Id])</b><b>ON DELETE CASCADE</b>GO<b>ALTER TABLE [dbo].[CarDriver] CHECK CONSTRAINT [FK_CarDriver_Cars_CarsId]</b>GO<b>ALTER TABLE [dbo].[CarDriver]</b><b>WITH CHECK ADD CONSTRAINT [FK_CarDriver_Drivers_DriversId]</b><b>FOREIGN KEY([DriversId])</b><b>REFERENCES [dbo].[Drivers] ([Id])</b><b>ON DELETE CASCADE</b>GO<b>ALTER TABLE [dbo].[CarDriver] CHECK CONSTRAINT [FK_CarDriver_Drivers_DriversId]</b>GOОбратите внимание на то, что исполняющая среда EF Core создает составной первичный ключ, ограничения проверки (внешних ключей) и каскадное поведение, чтобы обеспечить конфигурирование таблицы
CarDriverНа заметку! На момент написания главы создание шаблонов для отношений "многие ко многим" пока не поддерживалось. Создание шаблонов для отношений "многие ко многим" основано на табличной структуре, как во втором примере с сущностью
CarDriverhttps://github.com/dotnet/efcore/issues/22475Каскадное поведение
В большинстве хранилищ данных (вроде SQL Server) установлены правила, управляющие поведением при удалении строки. Если связанные (зависимые) записи тоже должны быть удалены, то такой подход называется каскадным удалением. В EF Core существуют три действия, которые могут произойти при удалении главной сущности (с зависимыми сущностями, загруженными в память):
• зависимые записи удаляются:
• зависимые внешние ключи устанавливаются в
null• зависимые сущности остаются незатронутыми.
Стандартное поведение для необязательных и обязательных отношений отличается. Поведение можно установить в одно из семи значений, из которых рекомендуется использовать только пять. Поведение конфигурируется с применением перечисления
DeleteBehavior•
Cascade•
ClientCascade•
ClientNoAction•
ClientSetNull•
NoAction•
SetNull•
RestrictУказанное поведение в EF Core инициируется только после удаления сущности и вызова метода
SaveChanges()DbContextНеобязательные отношения
Вспомните из табл. 22.4, что необязательными отношениями считаются такие, в которых зависимая сущность может устанавливать значение или значения внешних ключей в
nullClientSetNull
Обязательные отношения
Обязательные отношения — это такие отношения, при которых зависимая сущность не может устанавливать значение или значения внешних ключей в
nullCascade
Соглашения, связанные с сущностями
В EF Core принято много соглашений для определения сущности и ее связи с хранилищем данных. Соглашения всегда включены, если только они не отменены аннотациями данных или кодом Fluent API. В табл. 22.7 перечислены наиболее важные соглашения EF Core.

Во всех предшествующих примерах навигационных свойств для построения отношений между таблицами были задействованы соглашения EF Core.
Отображение свойств на столбцы
По соглашению открытые свойства для чтения и записи отображаются на столбцы с теми же самыми именами. Типы данных столбцов соответствуют эквивалентам для типов данных CLR свойств, принятым в хранилище данных. Свойства, не допускающие
nullnullnullnullnull•
_<имя свойства в "верблюжьем" стиле>•
_<имя свойства>•
m_<имя свойства в "верблюжьем" стиле>•
m_<имя свойства>В случае обновления свойства
ColorCar_color_Colorm_colorm_ColorПохожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.