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
Перейти на страницу:

modelBuilder.Entity<Car>(entity =>

{

<b>  entity.HasQueryFilter(c =&gt; c.IsDrivable);</b>

<b>  entity.Property(p</b>

<b>    =&gt; p.IsDrivable).HasField(&quot;_isDrivable&quot;).HasDefaultValue(true);</b>

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

    .WithMany(p =&gt; p.<b>Cars</b>)

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

    .OnDelete(DeleteBehavior.ClientSetNull)

    .HasConstraintName(&quot;FK_Make_Inventory&quot;);

});

Специальные исключения

Распространенный прием для обработки исключений предусматривает перехват системного исключения (и/или исключения EF Core, как в текущем примере), его регистрацию в журнале и генерацию специального исключения. Если специальное исключение перехватывается вышерасположенным методом, то разработчику известно, что исключение уже было зарегистрировано в журнале, и необходимо только отреагировать на него надлежащим образом в коде.

Создайте в проекте

AutoLot.Dal
новый каталог по имени
Exceptions
и поместите в него четыре новых файла классов,
CustomException.cs
,
CustomConcurrencyException.cs
,
CustomDbUpdateException.cs
и
CustomRetryLimitExceededException.cs
, содержимое которых показано ниже:

// CustomException.cs

using System;

namespace AutoLot.Dal.Exceptions

{

  public class CustomException : Exception

  {

    public CustomException() {}

    public CustomException(string message) : base(message) { }

    public CustomException(string message, Exception innerException)

            : base(message, innerException) { }

  }

}

// CustomConcurrencyException.cs

using Microsoft.EntityFrameworkCore;

namespace AutoLot.Dal.Exceptions

{

  public class CustomConcurrencyException : CustomException

  {

    public CustomConcurrencyException() { }

    public CustomConcurrencyException(string message) : base(message) { }

    public CustomConcurrencyException(

      string message, DbUpdateConcurrencyException innerException)

            : base(message, innerException) { }

  }

}

// CustomDbUpdateException.cs

using Microsoft.EntityFrameworkCore;

namespace AutoLot.Dal.Exceptions

{

  public class CustomDbUpdateException : CustomException

  {

      public CustomDbUpdateException() { }

    public CustomDbUpdateException(string message) : base(message) { }

    public CustomDbUpdateException(

      string message, DbUpdateException innerException)

            : base(message, innerException) { }

  }

}

// CustomRetryLimitExceededException.cs

using System;

using Microsoft.EntityFrameworkCore.Storage;

namespace AutoLot.Dal.Exceptions

{

  public class CustomRetryLimitExceededException : CustomException

  {

    public CustomRetryLimitExceededException() { }

    public CustomRetryLimitExceededException(string message)

        : base(message) { }

    public CustomRetryLimitExceededException(

      string message, RetryLimitExceededException innerException)

        : base(message, innerException) { }

  }

}

На заметку! Обработка специальных исключений была подробно раскрыта в главе 7.

Переопределение метода SaveChanges()

Как обсуждалось в предыдущей главе, метод

SaveChanges()
базового класса
DbContext
сохраняет результаты операций изменения, добавления и удаления в базе данных. Переопределение этого метода позволяет инкапсулировать обработку исключений в одном месте. Располагая специальными исключениями, добавьте оператор
using
для
AutoLot.Dal.Exceptions
в начало файла
ApplicationDbContext.cs
, после чего переопределите метод
SaveChanges()
:

public override int SaveChanges()

{

  try

  {

    return base.SaveChanges();

  }

  catch (DbUpdateConcurrencyException ex)

  {

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

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

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

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

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


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

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


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

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

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


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