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

Шрифт:

-
+

Интервал:

-
+

Закладка:

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

modelBuilder.Entity<CreditRisk>(entity =>

{

  entity.HasOne(d =&gt; d.Customer<b>Navigation</b>)

      .WithMany(p =&gt; p!.CreditRisks)

      .HasForeignKey(d =&gt; d.CustomerId)

      .HasConstraintName(&quot;FK_CreditRisks_Customers&quot;);

<b>  entity.OwnsOne(o =&gt; o.PersonalInformation,</b>

<b>    pd =&gt;</b>

<b>    {</b>

<b>      pd.Property&lt;string&gt;(nameof(Person.FirstName))</b>

<b>           .HasColumnName(nameof(Person.FirstName))</b>

<b>           .HasColumnType(&quot;nvarchar(50)&quot;);</b>

<b>      pd.Property&lt;string&gt;(nameof(Person.LastName))</b>

<b>           .HasColumnName(nameof(Person.LastName))</b>

<b>           .HasColumnType(&quot;nvarchar(50)&quot;);</b>

<b>      pd.Property(p =&gt; p.FullName)</b>

<b>           .HasColumnName(nameof(Person.FullName))</b>

<b>           .HasComputedColumnSql(&quot;[LastName] + ', ' + [FirstName]&quot;);</b>

<b>    });</b>

});

Сущность Customer

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

modelBuilder.Entity&lt;Customer&gt;(entity =&gt;

{

<b>  entity.OwnsOne(o =&gt; o.PersonalInformation,</b>

 pd =&gt;

<b>  {</b>

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

<b>    pd.Property(p =&gt; p.LastName).HasColumnName(nameof(Person.LastName));</b>

<b>    pd.Property(p =&gt; p.FullName)</b>

<b>      .HasColumnName(nameof(Person.FullName))</b>

<b>      .HasComputedColumnSql(&quot;[LastName] + ', ' + [FirstName]&quot;);</b>

<b>   });</b>

});

Сущность Make

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

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

modelBuilder.Entity&lt;Make&gt;(entity =&gt;

{

<b>  entity.HasMany(e =&gt; e.Cars)</b>

<b>      .WithOne(c =&gt; c.MakeNavigation!)</b>

<b>      .HasForeignKey(k =&gt; k.MakeId)</b>

<b>      .OnDelete(DeleteBehavior.Restrict)</b>

<b>      .HasConstraintName(&quot;FK_Make_Inventory&quot;);</b>

});

Сущность Order

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

modelBuilder.Entity&lt;Order&gt;(entity =&gt;

{

  entity.HasOne(d =&gt; d.CarNavigation)

     .WithMany(p =&gt; p!.Orders)

     .HasForeignKey(d =&gt; d.CarId)

     .OnDelete(DeleteBehavior.ClientSetNull)

     .HasConstraintName(&quot;FK_Orders_Inventory&quot;);

  entity.HasOne(d =&gt; d.CustomerNavigation)

     .WithMany(p =&gt; p!.Orders)

     .HasForeignKey(d =&gt; d.CustomerId)

     .OnDelete(DeleteBehavior.Cascade)

     .HasConstraintName(&quot;FK_Orders_Customers&quot;);

});

Настройте фильтр для свойства CarNavigation сущности Order, чтобы отфильтровывать неуправляемые автомобили. Обратите внимание, что этот код находится не в том же блоке, где был предыдущий код. Никаких формальных причин разносить код не существует; просто здесь демонстрируется альтернативный синтаксис для конфигурирования в отдельных блоках:

modelBuilder.Entity&lt;Order&gt;().HasQueryFilter(e =&gt; e.CarNavigation!.IsDrivable);

Сущность Car

Шаблонный класс содержит конфигурацию для класса Inventory, который понадобится изменить на Car. Свойство TimeStamp нужно удалить, а в конфигурации навигационных свойств изменить имена свойств на MakeNavigation и Cars. Сущность получает фильтр запросов для отображения по умолчанию только управляемых автомобилей и устанавливает стандартное значение свойства IsDrivable в true. Код должен иметь следующий вид:

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

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