{
[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
. Операторы
using
должны иметь следующий вид:
using 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
. Приведите операторы
using
к такому виду:
using 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
. Ниже показан обновленный код сущностного класса: