Читаем Язык программирования C#9 и платформа .NET5 полностью

public DbSet? Customers { get; set; }

public DbSet? Makes { get; set; }

public DbSet? Cars { get; set; }

public DbSet? Orders { get; set; }

<p id="AutBody_Root972"><strong>Обновление кода Fluent API</strong></p>

Код Fluent API находится в переопределенной версии метода OnModelCreating() и использует экземпляр класса ModelBuilder для обновления модели.

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

Первое изменение, вносимое в метод OnModelCreating(), касается добавления кода Fluent API для конфигурирования сущности SeriLogEntry. Свойство Properties является XML-столбцом SQL Server, а свойство TimeStamp отображается в SQL Server на столбец datetime2 со стандартным значением, установленным в результат функции getdate() из SQL Server. Добавьте в метод OnModelCreating() следующий код:

modelBuilder.Entity(entity =>

{

  entity.Property(e => e.Properties).HasColumnType("Xml");

  entity.Property(e => e.TimeStamp).HasDefaultValueSql("GetDate()");

});

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

Далее понадобится модифицировать код сущности CreditRisk. Блок конфигурирования для столбца TimeStamp удаляется, т.к. столбец конфигурируется в BaseEntity. Код конфигурирования навигации должен быть скорректирован с учетом новых имен. Кроме того, выполняется утверждение о том, что навигационное свойство не равно null. Другое изменение связано с конфигурированием свойства типа принадлежащей сущности, чтобы сопоставить с именами столбцов для FirstName и LastName, и добавлением вычисляемого значения для свойства FullName. Ниже показан обновленный блок для сущности CreditRisk с изменениями, выделенными полужирным:

modelBuilder.Entity(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(nameof(Person.FirstName))

           .HasColumnName(nameof(Person.FirstName))

           .HasColumnType("nvarchar(50)");

      pd.Property(nameof(Person.LastName))

           .HasColumnName(nameof(Person.LastName))

           .HasColumnType("nvarchar(50)");

      pd.Property(p => p.FullName)

           .HasColumnName(nameof(Person.FullName))

           .HasComputedColumnSql("[LastName] + ', ' + [FirstName]");

    });

});

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

Следующим обновляется блок для сущности Customer. Здесь удаляется код для TimeStamp и конфигурируются свойства принадлежащего сущностного класса:

modelBuilder.Entity(entity =>

{

  entity.OwnsOne(o => o.PersonalInformation,

 pd =>

  {

    pd.Property(p => p.FirstName).HasColumnName(nameof(Person.FirstName));

    pd.Property(p => p.LastName).HasColumnName(nameof(Person.LastName));

    pd.Property(p => p.FullName)

      .HasColumnName(nameof(Person.FullName))

      .HasComputedColumnSql("[LastName] + ', ' + [FirstName]");

   });

});

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

Для сущности Make необходимо модифицировать блок конфигурирования, удалив свойство TimeStamp и добавив код, который ограничивает удаление сущности, имеющей зависимые сущности:

modelBuilder.Entity(entity =>

{

  entity.HasMany(e => e.Cars)

      .WithOne(c => c.MakeNavigation!)

      .HasForeignKey(k => k.MakeId)

      .OnDelete(DeleteBehavior.Restrict)

      .HasConstraintName("FK_Make_Inventory");

});

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

Для сущности Order обновите имена навигационных свойств и добавьте утверждение, что обратные навигационные свойства не равны null. Вместо ограничения удалений отношение Customer с Order настраивается на каскадное удаление:

modelBuilder.Entity(entity =>

{

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных