public IEnumerable
На этом сущностный класс 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
. Ниже показан обновленный код сущностного класса:
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
закончен.
Сущность Order
Для таблицы 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))]