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

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

На нашем литературном портале можно бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю, Троелсен Эндрю . Жанр: Базы данных. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале litmir.org.
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Название: Язык программирования C#9 и платформа .NET5
Дата добавления: 22 август 2024
Количество просмотров: 233
Читать онлайн

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту readbookfedya@gmail.com для удаления материала

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

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

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле.

Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных.

Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

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

 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

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

  {

    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>

Перейти на страницу:
Комментариев (0)