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

  new() {Id = 6, MakeId = 5, Color = "Green", PetName = "Hank"},

  new() {Id = 7, MakeId = 5, Color = "Pink", PetName = "Pinky"},

  new() {Id = 8, MakeId = 6, Color = "Black", PetName = "Pete"},

  new() {Id = 9, MakeId = 4, Color = "Brown", PetName = "Brownie"},

  new() {Id = 10, MakeId = 1, Color = "Rust", PetName = "Lemon",

                                              IsDrivable = false},

};

public static List<Order> Orders => new()

{

  new() {Id = 1, CustomerId = 1, CarId = 5},

  new() {Id = 2, CustomerId = 2, CarId = 1},

  new() {Id = 3, CustomerId = 3, CarId = 4},

  new() {Id = 4, CustomerId = 4, CarId = 7},

  new() {Id = 5, CustomerId = 5, CarId = 10},

};

public static List<CreditRisk> CreditRisks => new()

{

  new()

  {

    Id = 1,

    CustomerId = Customers[4].Id,

    PersonalInformation = new()

    {

      FirstName = Customers[4].PersonalInformation.FirstName,

      LastName = Customers[4].PersonalInformation.LastName

    }

  }

};

Загрузка выборочных данных

Внутренний метод

SeedData()
в классе
SampleDatalnitializer
добавляет данные из методов класса
SampleData
к экземпляру
ApplicationDbContext
и сохраняет данные в базе данных:

internal static void SeedData(ApplicationDbContext context)

{

  try

  {

    ProcessInsert(context, context.Customers!, SampleData.Customers);

    ProcessInsert(context, context.Makes!, SampleData.Makes);

    ProcessInsert(context, context.Cars!, SampleData.Inventory);

    ProcessInsert(context, context.Orders!, SampleData.Orders);

    ProcessInsert(context, context.CreditRisks!, SampleData.CreditRisks);

  }

  catch (Exception ex)

  {

    Console.WriteLine(ex);

    // Поместить сюда точку останова, чтобы выяснить,

    // в чем заключается проблема.

    throw;

  }

  static void ProcessInsert<TEntity>(

    ApplicationDbContext context,

    DbSet<TEntity> table,

    List<TEntity> records) where TEntity : BaseEntity

  {

     if (table.Any())

     {

       return;

     }

    IExecutionStrategy strategy = context.Database.CreateExecutionStrategy();

    strategy.Execute(() =>

    {

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

      try

      {

        var metaData = context.Model.FindEntityType(typeof(TEntity).FullName);

        context.Database.ExecuteSqlRaw(

            $"SET IDENTITY_INSERT {metaData.GetSchema()}.

            {metaData.GetTableName()} ON");

        table.AddRange(records);

        context.SaveChanges();

        context.Database.ExecuteSqlRaw(

            $"SET IDENTITY_INSERT {metaData.GetSchema()}.

            {metaData.GetTableName()} OFF");

        transaction.Commit();

      }

      catch (Exception)

      {

        transaction.Rollback();

      }

      });

  }

}

Для обработки данных в методе

SeedData()
используется локальная функция. Сначала она проверяет, содержит ли таблица какие-то записи, и если нет, то переходит к обработке выборочных данных. Из фасадного экземпляра базы данных создается экземпляр реализации
IExecutionStrategy
, применяемый для создания явной транзакции, которая необходима для включения и отключения вставки идентичности. Записи добавляются; если все прошло успешно, тогда транзакция фиксируется, а в противном случае подвергается откату.

Приведенные далее два открытых метода используются для сброса базы данных. Метод

InitializeData()
удаляет и воссоздает базу данных перед ее заполнением начальными данными, а метод
ClearDatabase()
просто удаляет все записи, сбрасывает идентичность и заполняет базу начальными данными:

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

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

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


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

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


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

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

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


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