books-read.com
books-read.com » Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

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

Наш ресурс дает возможность бесплатно читать книгу онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных . Сайт books-read.com дает возможность читать полную версию книги без регистрации и sms. Все книги онлайн, не надо качать fb2, epub, txt.
Добавить книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю в приложение ЧИТАТЬ КНИГУ ОФЛАЙН в приложении ios/android
Перейти на страницу:

    throw new CustomConcurrencyException(

        "A concurrency error happened.", ex);

      // Произошла ошибка параллелизма

  }

  catch (RetryLimitExceededException ex)

  {

    // Подлежит регистрации в журнале и надлежащей обработке.

    throw new CustomRetryLimitExceededException(

        "There is a problem with SQl Server.", ex);

      // Возникла проблема c SQL Server

  }

  catch (DbUpdateException ex)

  {

    // Подлежит регистрации в журнале и надлежащей обработке.

    throw new CustomDbUpdateException(

        "An error occurred updating the database", ex);

      // Произошла ошибка при обновлении базы данных

  }

  catch (Exception ex)

  {

    // Подлежит регистрации в журнале и надлежащей обработке.

    throw new CustomException(

        "An error occurred updating the database", ex);

      // Произошла ошибка при обновлении базы данных

  }

}

Обработка событий DbContext и ChangeTracker

Перейдите к конструктору класса

ApplicationDbContext
и добавьте три события
DbContext
, которые обсуждались в предыдущей главе:

public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)

  : base(options)

{

<b>  base.SavingChanges += (sender, args) =&gt;</b>

<b>  {</b>

<b>     Console.WriteLine($&quot;Saving changes for {((ApplicationDbContext)</b>

       sender)!.Database!.
GetConnectionString()}&quot;);

<b>  };</b>

<b>  base.SavedChanges += (sender, args) =&gt;</b>

<b>  {</b>

<b>     Console.WriteLine($&quot;Saved {args!.EntitiesSavedCount} changes for</b>

<b>       {((ApplicationDbContext)sender)!.Database!.GetConnectionString()}&quot;);</b>

<b>  };</b>

<b>  base.SaveChangesFailed += (sender, args) =&gt;</b>

<b>  {</b>

<b>    Console.WriteLine(</b>

<b>      $&quot;An exception occurred! {args.Exception.Message} entities&quot;);</b>

<b>  };</b>

}

Затем добавьте обработчики для событий

StateChanged
и
Tracked
класса
ChangeTracker
:

public ApplicationDbContext(DbContextOptions&lt;ApplicationDbContext&gt; options)

  : base(options)

{

  ...

<b>  ChangeTracker.Tracked += ChangeTracker_Tracked;</b>

<b>  ChangeTracker.StateChanged += ChangeTracker_StateChanged;</b>

}

Аргументы события

Tracked
содержат ссылку на сущность, которая инициировала событие, и указывают, было оно получено из запроса (загруженного из базы данных) или добавлено программно. Добавьте в класс
ApplicationDbContext
следующий обработчик событий:

private void ChangeTracker_Tracked(object? sender, EntityTrackedEventArgs e)

{

  var source = (e.FromQuery) ? &quot;Database&quot; : &quot;Code&quot;;

  if (e.Entry.Entity is Car c)

  {

    Console.WriteLine($&quot;Car entry {c.PetName} was added from {source}&quot;);

  }

}

Событие

StateChanged
инициируется при изменении состояния сущности. Одно из применений этого события — аудит. Поместите в класс
ApplicationDbContext
приведенный ниже обработчик событий. Если свойство
NewState
сущности имеет значение
Unchanged
, тогда выполняется проверка свойства
OldState
для выяснения, сущность была добавлена или же модифицирована.

private void ChangeTracker_StateChanged(object? sender,

                                        EntityStateChangedEventArgs e)

{

  if (e.Entry.Entity is not Car c)

  {

    return;

  }

  var action = string.Empty;

   Console.WriteLine(
$&quot;Car {c.PetName}

           was {e.OldState} before the state changed to
{e.NewState}&quot;);

  switch (e.NewState)

  {

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

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - на сайте онлайн книг books-read.com Вы можете читать полные версии книг автора в одном месте.


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

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


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор books-read.com


Прокомментировать
Подтвердите что вы не робот:*