books-read.com
books-read.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

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

Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:

 OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

CREATE TABLE [dbo].[Cars](

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

  [Color] [nvarchar](max) NULL,

  [PetName] [nvarchar](max) NULL,

  [TimeStamp] [varbinary](max) NULL,

<b>  [MakeId] [int] NOT NULL,</b>

 CONSTRAINT [PK_Cars] 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

<b>ALTER TABLE [dbo].[Cars]</b>

<b>WITH CHECK ADD  CONSTRAINT [FK_Cars_Makes_MakeId] FOREIGN </b>

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

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

<b>ON DELETE CASCADE</b>

GO

<b>ALTER TABLE [dbo].[Cars] CHECK CONSTRAINT [FK_Cars_Makes_MakeId]</b>

GO

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

Cars
).

Отношения "один к одному"

В отношениях "один к одному" обе сущности имеют навигационные свойства типа ссылок друг на друга. Хотя отношения "один к одному" четко обозначают главную и зависимую сущности, при построении таких отношений EF Core необходимо сообщить о том, какая сторона является главной, либо явно определяя внешний ключ, либо указывая главную сущность с использованием Fluent API. Если не проинформировать исполняющую среду EF Core, тогда она будет делать выбор на основе своей способности обнаруживать внешний ключ. На практике вы должны четко определять зависимую сущность, добавляя свойства внешнего ключа:

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; }

<b>    public Radio RadioNavigation { get; set; }</b>

  }

}

namespace AutoLot.Samples.Models

{

  public class Radio : BaseEntity

  {

    public bool HasTweeters { get; set; }

    public bool HasSubWoofers { get; set; }

    public string RadioId { get; set; }

<b>    public int CarId { get; set; }</b>

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

  }

}

Поскольку класс

Radio
имеет внешний ключ к классу
Car
(на основе соглашения, которое будет раскрыто вскоре),
Radio
является зависимой, а
Car
— главной сущностью. Исполняющая среда EF Core неявно создает обязательный уникальный индекс на свойстве внешнего ключа в зависимой сущности. Если вы хотите изменить имя индекса, тогда можете воспользоваться аннотациями данных или Fluent API.

Добавьте в класс

ApplicationDbContext
экземпляр
DbSet&lt;Radio&gt;
:

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

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

public virtual DbSet&lt;Radio&gt; Radios { get; set; }

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

dotnet ef migrations add One2One -o Migrations

 -c AutoLot.Samples.ApplicationDbContext

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

В результате обновления базы данных с применением миграции EF Core таблица

Cars
не изменяется, но создается таблица
Radios
:

CREATE TABLE [dbo].[Radios](

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

  [HasTweeters] [bit] NOT NULL,

  [HasSubWoofers] [bit] NOT NULL,

  [RadioId] [nvarchar](max) NULL,

  [TimeStamp] [varbinary](max) NULL,

<b>  [CarId] [int] NOT NULL,</b>

 CONSTRAINT [PK_Radios] 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

<b>ALTER TABLE [dbo].[Radios]</b>

<b>WITH CHECK ADD  CONSTRAINT [FK_Radios_Cars_CarId] FOREIGN </b>

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

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

Троелсен Эндрю - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


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

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


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

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

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


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