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
Перейти на страницу:

[InverseProperty(<b>nameof(Make.Cars)</b>)]

public Make? MakeNavigation { get; set; }

На заметку! Модификатор

virtual
необходим для ленивой загрузки. Поскольку ленивая загрузка в примерах книги не используется, модификатор
virtual
будет удаляться из всех свойств внутри уровня доступа к данным.

Для навигационного свойства

Orders
требуется атрибут
[Jsonlgnore]
, чтобы предотвратить циклические ссылки JSON при сериализации объектной модели. В шаблонном коде обратное навигационное свойство задействует выражение
nameof
, но его понадобится обновить, т.к. имена всех навигационных свойств типа ссылок будут содержать суффикс
Navigation
. Последнее изменение связано с тем, что свойство должно иметь тип
IEnumerable&lt;Order&gt;
, а не
ICollection&lt;Order&gt;
, и инициализироваться с применением нового экземпляра
List&lt;Order&gt;
. Изменение не является обязательным, потому что
ICollection&lt;Order&gt;
тоже будет работать. Более низкоуровневый тип
IEnumerable&lt;T&gt;
предпочтительнее использовать с навигационными свойствами типа коллекций
IEnumerable&lt;T&gt;
(поскольку интерфейсы
IQueryable&lt;T&gt;
и
ICollection&lt;T&gt;
унаследованы от
IEnumerable&lt;T&gt;
). Модифицируйте код, как показано далее:

<b>[JsonIgnore]</b>

[InverseProperty(nameof(Order.Car<b>Navigation</b>))]

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

Затем добавьте свойство

NotMapped
, которое будет отображать значение
Make
экземпляра
Car
, устранив необходимость в классе
CarViewModel
из главы 21. Если связанная информация
Make
была извлечена из базы данных с записью
Car
, то значение
MakeName
отображается. Если связанные данные не были извлечены, тогда для свойства отображается строка Unknown (т.е. производитель не известен). Как вы должны помнить, свойства с атрибутом
[NotMapped]
не относятся к базе данных и существуют только внутри сущности. Добавьте следующий код:

[NotMapped]

public string MakeName =&gt; MakeNavigation?.Name ?? &quot;Unknown&quot;;

Переопределите

ToString()
для отображения информации о транспортном средстве:

public override string ToString()

{

  // Поскольку столбец PetName может быть пустым,
.

  // определить стандартное имя **No Name**

  return $&quot;{PetName ?? &quot;**No Name**&quot;} is a {Color} {MakeNavigation?.Name}

    with ID {Id}.&quot;;

}

Добавьте к свойству

MakeId
атрибуты
[Required]
и
[DisplayName]
. Несмотря на то что инфраструктура EF Core считает свойство
MakeId
обязательным, т.к. оно не допускает значение
null
, механизму проверки достоверности ASP.NET Core нужен атрибут
[Required]
. Ниже приведен модифицированный код:

<b>[Required]</b>

<b>[DisplayName(&quot;Make&quot;)]</b>

public int MakeId { get; set; }

Финальное изменение заключается в добавлении свойства

IsDrivable
типа
bool
, не допускающего значения
null
, с поддерживающим полем, допускающим
null
, и отображаемым именем:

private bool? _isDrivable;

[DisplayName(&quot;Is Drivable&quot;)]

public bool IsDrivable

{

  get =&gt; _isDrivable ?? false;

  set =&gt; _isDrivable = value;

}

На этом обновление сущностного класса

Car
завершено.

Сущность Customer

Для таблицы

Customers
был создан шаблонный сущностный класс по имени
Customer
. Приведите операторы
using
к следующему виду:

using System;

using System.Collections.Generic;

using System.ComponentModel.DataAnnotations.Schema;

using System.Text.Json.Serialization;

using AutoLot.Models.Entities.Base;

using AutoLot.Models.Entities.Owned;

Унаследуйте класс

Customer
 от
BaseEntityn
удалите свойства
Id
и
TimeStamp
. Удалите конструктор и директиву
#pragma nullable disable
, после чего добавьте атрибут
[Table]
со схемой. Удалите свойства
FirstName
и
LastName
, т.к. они будут заменены принадлежащим сущностным классом
Person
. Вот как выглядит код в настоящий момент:

namespace AutoLot.Models.Entities

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

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

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


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

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


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

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

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


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