Унаследуйте класс 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))]

[InverseProperty(nameof(Customer.Orders))]

public Customer? CustomerNavigation { get; set; }

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

На заметку! В данный момент проект должен нормально компилироваться. Проект AutoLot.Dal не скомпилируется до тех пор, пока не будет обновлен класс ApplicationDbContext.

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

База данных нуждается в дополнительной таблице для хранения журнальных записей. В проектах ASP.NET Core из части VIII будет применяться инфраструктура ведения журналов SeriLog, и один из вариантов предусматривает помещение журнальных записей в таблицу SQL Server. Хотя таблица будет использоваться через несколько глав, имеет смысл добавить ее сейчас.

Эта таблица не связана ни с одной из остальных таблиц и не задействует класс BaseEntity. Добавьте в каталог Entities новый файл класса по имени SeriLogEntry.cs и поместите в него следующий код:

using System;

using System.ComponentModel.DataAnnotations;

using System.ComponentModel.DataAnnotations.Schema;

using System.Xml.Linq;

namespace AutoLot.Models.Entities

{

  [Table("SeriLogs", Schema = "Logging")]

  public class SeriLogEntry

  {

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

    public int Id { get; set; }

    public string? Message { get; set; }

    public string? MessageTemplate { get; set; }

    [MaxLength(128)]

    public string? Level { get; set; }

    [DataType(DataType.DateTime)]

    public DateTime? TimeStamp { get; set; }

    public string? Exception { get; set; }

    public string? Properties { get; set; }

    public string? LogEvent { get; set; }

    public string? SourceContext { get; set; }

    public string? RequestPath { get; set; }

    public string? ActionName { get; set; }

    public string? ApplicationName { get; set; }

    public string? MachineName { get; set; }

    public string? FilePath { get; set; }

    public string? MemberName { get; set; }

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

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