Kniga-Online.club
» » » » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

<b>KEY([CarId])</b>

<b>REFERENCES [dbo].[Cars] ([Id])</b>

<b>ON DELETE CASCADE</b>

GO

<b>ALTER TABLE [dbo].[Radios] CHECK CONSTRAINT [FK_Radios_Cars_CarId]</b>

GO

Обратите внимание на ограничения внешнего ключа и проверки, созданные для зависимой таблицы (Radios).

Отношения "многие ко многим" (нововведение в версии EF Core 5)

В отношении "многие ко многим" каждая сущность содержит навигационное свойство типа коллекции для другой сущности, что в хранилище данных реализуется с использованием таблицы соединения посреди двух сущностных таблиц. Такая таблица соединения именуется в соответствии с двумя таблицами в виде &lt;Сущность1Сущность2&gt;. Имя можно изменить в коде через Fluent API. Таблица соединения имеет отношения "один ко многим" с каждой сущностной таблицей:

namespace AutoLot.Samples.Models

{

  public class Car : BaseEntity

  {

    public string Color { get; set; }

    public string PetName { get; set; }

    public int MakeId { get; set; }

    public Make MakeNavigation { get; set; }

    public Radio RadioNavigation { get; set; }

<b>    public IEnumerable&lt;Driver&gt; Drivers { get; set; } = new List&lt;Driver&gt;();</b>

  }

}

namespace AutoLot.Samples.Models

{

  public class Driver : BaseEntity

  {

    public string FirstName { get; set; }

    public string LastName { get; set; }

<b>    public IEnumerable&lt;Car&gt; Cars { get; set; } = new List&lt;Car&gt;();</b>

  }

}

Эквивалентное решение можно обеспечить путем явного создания трех таблиц и именно так приходилось поступать в версиях EF Core, предшествующих EF Core 5. Вот как выглядит сокращенный пример:

public class Driver

{

  ...

<b>  public IEnumerable&lt;CarDriver&gt; CarDrivers { get; set; }</b>

}

public class Car

{

  ...

<b>  public IEnumerable&lt;CarDriver&gt; CarDrivers { get; set; }</b>

}

public class CarDriver

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

{

  public int CarId {get;set;}

<b>  public Car CarNavigation {get;set;}</b>

  public int DriverId {get;set;}

<b>  public Driver DriverNavigation {get;set;}</b>

}

Добавьте в класс ApplicationDbContext экземпляр DbSet&lt;Driver&gt;:

public virtual DbSet&lt;Car&gt; Cars { get; set; }

public virtual DbSet&lt;Make&gt; Makes { get; set; }

<b>public virtual DbSet&lt;Radio&gt; Radios { get; set; }</b>

<b>public virtual DbSet&lt;Driver&gt; Drivers { get; set; }</b>

Создайте миграцию и обновите базу данных с помощью следующих команд:

dotnet ef migrations add Many2Many -o Migrations

 -c AutoLot.Samples.ApplicationDbContext

dotnet ef database update many2Many  -c AutoLot.Samples.ApplicationDbContext

После обновления базы данных с применением миграции EF Core таблица Cars не изменяется, но создаются таблицы Drivers и CarDriver:

CREATE TABLE [dbo].[Drivers](

  [Id] [INT] IDENTITY(1,1) NOT NULL,

  [FirstName] [NVARCHAR](MAX) NULL,

  [LastName] [NVARCHAR](MAX) NULL,

  [TimeStamp] [VARBINARY](MAX) NULL,

 CONSTRAINT [PK_Drivers] PRIMARY KEY CLUSTERED

(

  [Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

 IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,

 OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

CREATE TABLE [dbo].[CarDriver](

  [CarsId] [int] NOT NULL,

  [DriversId] [int] NOT NULL,

 <b>CONSTRAINT [PK_CarDriver] PRIMARY KEY CLUSTERED</b>

<b>(</b>

<b>  [CarsId] ASC,</b>

<b>  [DriversId] ASC</b>

<b>)</b>WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,

 IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON,

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

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*