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

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

На нашем литературном портале можно бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю, Троелсен Эндрю . Жанр: Базы данных. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале litmir.org.
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Название: Язык программирования C#9 и платформа .NET5
Дата добавления: 22 август 2024
Количество просмотров: 233
Читать онлайн

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту readbookfedya@gmail.com для удаления материала

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

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

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле.

Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных.

Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

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

static void SampleSaveChanges()

{

  // Фабрика не предназначена для такого использования,

  // но это демонстрационный код

    var context = new ApplicationDbContextFactory().CreateDbContext(null);

    // Внести какие-нибудь изменения.

    context.<b>SaveChanges()</b>;

}

В оставшемся материале главы (и книги) вы обнаружите много примеров сохранения изменений.

Поддержка транзакций и точек сохранения

Исполняющая среда EF Core помещает каждый вызов SaveChanges()/SaveChangesAsync() внутрь неявной транзакции, использующей уровень изоляции базы данных. Чтобы добиться большей степени контроля, можете включить экземпляр производного класса DbContext в явную транзакцию. Для выполнения явной транзакции создайте транзакцию с применением свойства Database класса, производного от DbContext. Управляйте своими операциями обычным образом и затем предпримите фиксацию или откат транзакции. Ниже приведен фрагмент кода, где все демонстрируется:

using var trans = context.Database.BeginTransaction();

try

{

  // Создать, изменить, удалить запись.

  context.SaveChanges();

  trans.Commit();

}

catch (Exception ex)

{

  trans.Rollback();

}

В версии EF Core 5 были введены точки сохранения для транзакций EF Core. Когда вызывается метод SaveChanges()/SaveChangesAsync(), а транзакция уже выполняется, исполняющая среда EF Core создает в этой транзакции точку сохранения. Если вызов терпит неудачу, то откат транзакции происходит в точку сохранения, а не в начало транзакции. Точками сохранения можно также управлять в коде, вызывая методы CreateSavePoint() и RollbackToSavepoint() для транзакции:

using var trans = context.Database.BeginTransaction();

try

{

  // Создать, изменить, удалить запись.

  trans.CreateSavepoint(&quot;check point 1&quot;);

  context.SaveChanges();

  trans.Commit();

}

catch (Exception ex)

{

  trans. RollbackToSavepoint(&quot;check point 1&quot;);

}

Транзакции и стратегии выполнения

 В случае активной стратегии выполнения (как при использовании EnableRetryOnFailure()) перед созданием явной транзакции вы должны получить ссылку на текущую стратегию выполнения, которая применяется EF Core. Затем вызовите на этой стратегии метод Execute(), чтобы создать явную транзакцию:

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

var strategy = context.Database.CreateExecutionStrategy();

strategy.Execute(() =&gt;

{

  using var trans = context.Database.BeginTransaction();

  try

   {

    actionToExecute();

    trans.Commit();

  }

  catch (Exception ex)

  {

    trans.Rollback();

  }

});

События SavingChanges/SavedChanges

В версии EF Core 5 появились три новых события, которые инициируются методами SaveChanges()/SaveChangesAsync(). Событие SavingChanges запускается при вызове SaveChanges(), но перед выполнением операторов SQL в хранилище данных, а событие SavedChanges — после завершения работы метода SaveChanges(). В следующем (простейшем) коде демонстрируются события и их обработчики в действии:

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

    : base(options)

{

  SavingChanges += (sender, args) =&gt;

  {

     Console.WriteLine($&quot;Saving changes for {((DbContext)sender).Database.

GetConnectionString()}&quot;);

  };

  SavedChanges += (sender, args) =&gt;

  {

    Console.WriteLine($&quot;Saved {args.EntitiesSavedCount} entities&quot;);

  };

  SaveChangesFailed += (sender, args) =&gt;

  {

    Console.WriteLine($&quot;An exception occurred! {args.Exception.Message}

entities&quot;);

  };

}

Класс DbSet<T>

Для каждой сущности в своей объектной модели вы добавляете свойство типа DbSet&lt;T&gt;. Класс DbSet&lt;T&gt; представляет собой специализированную коллекцию, используемую для взаимодействия с поставщиком баз данных с целью получения, добавления, обновления и удаления записей в базе данных. Каждая коллекция DbSet&lt;T&gt; предлагает несколько основных служб для взаимодействия с базой данных. Любые запросы LINQ, запускаемые в отношении класса DbSet&lt;T&gt;, транслируются поставщиком базы данных в запросы к базе данных. В табл. 22.2 описан ряд основных членов класса DbSet&lt;T&gt;.

Перейти на страницу:
Комментариев (0)