Язык программирования C#9 и платформа .NET5
Часть 437 из 642 Информация о книге
{[Table("Customers", Schema = "dbo")]public partial class Customer : BaseEntity{[InverseProperty(nameof(CreditRisk.Customer))]public virtual ICollection<CreditRisk> CreditRisks { get; set; }[InverseProperty(nameof(Order.Customer))]public virtual ICollection<Order> Orders { get; set; }}}Подобно сущностному классу
в коде по-прежнему присутствуют проблемы, которые необходимо устранить, к тому же понадобится добавить принадлежащий сущностный класс. К навигационным свойствам нужно добавить атрибутCar, атрибуты обратных навигационных свойств потребуется обновить с использованием суффикса[Jsonlgnore], типы необходимо изменить наNavigationс инициализацией, а модификаторIEnumerable<T>удалить. Ниже показан модифицированный код:virtual<b>[JsonIgnore]</b><b>[InverseProperty(nameof(CreditRisk.CustomerNavigation))]</b><b>public IEnumerable<CreditRisk> CreditRisks { get; set; } =</b><b> new List<CreditRisk>();</b><b>[JsonIgnore]</b><b>[InverseProperty(nameof(Order.CustomerNavigation))]</b><b>public IEnumerable<Order> Orders { get; set; } = new List<Order>();</b>Осталось лишь добавить свойство с типом принадлежащего сущностного класса. Отношение будет позже сконфигурировано посредством Fluent API.
public Person PersonalInformation { get; set; } = new Person();Итак, обновление сущностного класса
окончено.CustomerСущность Make
Для таблицы
был создан шаблонный сущностный класс по имениMakes. ОператорыMakeдолжны иметь следующий вид:usingusing System;using System.Collections.Generic;using System.ComponentModel;using System.ComponentModel.DataAnnotations;using System.ComponentModel.DataAnnotations.Schema;using System.Text.Json.Serialization;using AutoLot.Models.Entities.Base;using Microsoft.EntityFrameworkCore;Унаследуйте класс
отMakeи удалите свойстваBaseEntityиId. Удалите конструктор и директивуTimeStamp, а затем добавьте атрибут#pragma nullable disableсо схемой. Вот текущий код сущностного класса:[Table]namespace AutoLot.Models.Entities{[Table("Makes", Schema = "dbo")]public partial class Make : BaseEntity{[Required][StringLength(50)]public string Name { get; set; }[InverseProperty(nameof(Inventory.Make))]public virtual ICollection<Inventory> Inventories { get; set; }}}В представленном далее коде демонстрируется инициализированное свойство
, не допускающееName, и скорректированное навигационное свойствоnull(обратите внимание на изменение имениCarsнаInventoryв выраженииCar):nameof[Required][StringLength(50)]public string Name { get; set; } = <b>"Ford"</b>;[JsonIgnore][InverseProperty(nameof(<b>Car</b>.Make<b>Navigation</b>))]public <b>IEnumerable</b><Car> Cars { get; set; } = <b>new List<Car>()</b>;На этом сущностный класс
завершен.MakeСущность CreditRisk
Для таблицы
был создан шаблонный сущностный класс по имениCreditRisks. Приведите операторыCreditRiskк такому виду:usingusing System.ComponentModel.DataAnnotations.Schema;using AutoLot.Models.Entities.Base;using AutoLot.Models.Entities.Owned;Унаследуйте класс
отCreditRiskсвойстваBaseEntityиудалитеиId. Удалите конструктор и директивуTimeStampи добавьте атрибут#pragma nullable disableсо схемой. Удалите свойства[Table]иFirstName, т.к. они будут заменены принадлежащим сущностным классомLastName. Ниже показан обновленный код сущностного класса:Person