public int? LineNumber { get; set; }
[NotMapped]
public XElement? PropertiesXml
=> (Properties != null)? XElement.Parse(Properties):null;
}
}
Итак, сущностный класс SeriLogEntry
На заметку!
СвойствоTimeStamp в сущностном классе SeriLogEntry отличается от свойства TimeStamp в классе BaseEntity. Имена совпадают, но в этой таблице оно хранит дату и время регистрации записи в журнале (что будет конфигурироваться как стандартная настройка SQL Server), а не rowversion в других сущностях.Класс ApplicationDbContext
Пришло время обновить файл ApplicationDbContext.cs
using к такому виду:using System;
using System.Collections;
using System.Collections.Generic;
using AutoLot.Models.Entities;
using AutoLot.Models.Entities.Owned;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.EntityFrameworkCore.ChangeTracking;
using AutoLot.Dal.Exceptions;
Файл начинается с конструктора без параметров. Удалите его, т.к. он не нужен. Следующий конструктор принимает экземпляр DbContextOptions
DbContext и ChangeTracker добавляются позже в главе.Свойства DbSet
null, имена скорректировать, а модификаторы virtual удалить. Теперь новую сущность для ведения журнала необходимо добавить. Перейдите к свойствам DbSet и модифицируйте их следующим образом:public DbSet
public DbSet
public DbSet
public DbSet
public DbSet
public DbSet
Обновление кода Fluent API
Код Fluent API находится в переопределенной версии метода OnModelCreating
ModelBuilder для обновления модели.Сущность SeriLogEntry
Первое изменение, вносимое в метод OnModelCreating
SeriLogEntry. Свойство Properties является XML-столбцом SQL Server, а свойство TimeStamp отображается в SQL Server на столбец datetime2 со стандартным значением, установленным в результат функции getdate из SQL Server. Добавьте в метод OnModelCreating следующий код:modelBuilder.Entity
{
entity.Property(e => e.Properties).HasColumnType("Xml");
entity.Property(e => e.TimeStamp).HasDefaultValueSql("GetDate");
});
Сущность CreditRisk
Далее понадобится модифицировать код сущности CreditRisk
TimeStamp удаляется, т.к. столбец конфигурируется в BaseEntity. Код конфигурирования навигации должен быть скорректирован с учетом новых имен. Кроме того, выполняется утверждение о том, что навигационное свойство не равно null. Другое изменение связано с конфигурированием свойства типа принадлежащей сущности, чтобы сопоставить с именами столбцов для FirstName и LastName, и добавлением вычисляемого значения для свойства FullName. Ниже показан обновленный блок для сущности CreditRisk с изменениями, выделенными полужирным:modelBuilder.Entity
{
entity.HasOne(d => d.CustomerNavigation
.WithMany(p => p!.CreditRisks)
.HasForeignKey(d => d.CustomerId)
.HasConstraintName("FK_CreditRisks_Customers");
entity.OwnsOne(o => o.PersonalInformation,
pd =>
{
pd.Property
.HasColumnName(nameof(Person.FirstName))
.HasColumnType("nvarchar(50)");
pd.Property
.HasColumnName(nameof(Person.LastName))
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT