public IEnumerable Cars { get; set; } = new List();

На этом сущностный класс Make завершен.

<p id="AutBody_Root968"><strong>Сущность CreditRisk</strong></p>

Для таблицы 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. Ниже показан обновленный код сущностного класса:

namespace AutoLot.Models.Entities

{

  [Table("CreditRisks", Schema = "dbo")]

  public partial class CreditRisk : BaseEntity

  {

    public Person PersonalInformation { get; set; } = new Person();

    public int CustomerId { get; set; }

    [ForeignKey(nameof(CustomerId))]

    [InverseProperty("CreditRisks")]

    public virtual Customer Customer { get; set; }

  }

}

Исправьте навигационное свойство, для чего удалите модификатор virtual, используйте выражение nameof в атрибуте [InverseProperty] и добавьте к имени свойства суффикс Navigation:

[ForeignKey(nameof(CustomerId))]

[InverseProperty(nameof(Customer.CreditRisks))]

public Customer? CustomerNavigation { get; set; }

Финальное изменение заключается в добавлении свойства с типом принадлежащего сущностного класса. Отношение будет позже сконфигурировано посредством Fluent API.

public Person PersonalInformation { get; set; } = new Person();

Итак, сущностный класс CreditRisk закончен.

<p id="AutBody_Root969"><strong>Сущность Order</strong></p>

Для таблицы Orders был создан шаблонный сущностный класс по имени Order. Модифицируйте операторы using следующим образом:

using System;

using System.ComponentModel.DataAnnotations.Schema;

using AutoLot.Models.Entities.Base;

using Microsoft.EntityFrameworkCore;

Унаследуйте класс Order от BaseEntity и удалите свойства Id и TimeStamp. Удалите конструктор и директиву #pragma nullable disable, а затем добавьте атрибут [Table] со схемой. Вот текущий код сущностного класса:

namespace AutoLot.Models.Entities

{

  [Table("Orders", Schema = "dbo")]

  [Index(nameof(CarId), Name = "IX_Orders_CarId")]

  [Index(nameof(CustomerId), nameof(CarId),

     Name = "IX_Orders_CustomerId_CarId", IsUnique = true)]

  public partial class Order : BaseEntity

  {

    public int CustomerId { get; set; }

    public int CarId { get; set; }

    [ForeignKey(nameof(CarId))]

    [InverseProperty(nameof(Inventory.Orders))]

    public virtual Inventory Car { get; set; }

    [ForeignKey(nameof(CustomerId))]

    [InverseProperty("Orders")]

    public virtual Customer { get; set; }

    }

}

К именам навигационных свойств Car и Customer необходимо добавить суффикс Navigation. Навигационное свойство Car должно иметь тип Car, а не Inventory. В выражении nameof в обратном навигационном свойстве нужно применять Car.Orders вместо Inventory.Orders. В навигационном свойстве Customer должно использоваться выражение nameof для InverseProperty. Оба свойства должны быть сделаны допускающими значение null. Модификатор virtual понадобится удалить.

[ForeignKey(nameof(CarId))]

[InverseProperty(nameof(Car.Orders))]

public Car? CarNavigation { get; set; }

[ForeignKey(nameof(CustomerId))]

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

Похожие книги