Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 434 435 436 437 438 439 440 441 442 ... 642

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:

<b>[ForeignKey(nameof(CustomerId))]</b>

<b>[InverseProperty(nameof(Customer.CreditRisks))]</b>

<b>public Customer? CustomerNavigation { get; set; }</b>

Финальное изменение заключается в добавлении свойства с типом принадлежащего сущностного класса. Отношение будет позже сконфигурировано посредством 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(&quot;Orders&quot;, Schema = &quot;dbo&quot;)]

  [Index(nameof(CarId), Name = &quot;IX_Orders_CarId&quot;)]

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

     Name = &quot;IX_Orders_CustomerId_CarId&quot;, IsUnique = true)]

  public partial class Order : BaseEntity

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  {

    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(&quot;Orders&quot;)]

    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(<b>Car</b>.Orders))]

public <b>Car?</b> Car<b>Navigation</b> { get; set; }

[ForeignKey(nameof(CustomerId))]

[InverseProperty(<b>nameof(Customer.Orders)</b>)]

public Customer? CustomerNavigation { get; set; }

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

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

Сущность SeriLogEntry

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

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

using System;

1 ... 434 435 436 437 438 439 440 441 442 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий