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

Реализуйте метод GetOrderViewModel(), который возвращает экземпляр реализации IQueryable из представления базы данных:

public IQueryable GetOrdersViewModel()

{

  return Context.CustomerOrderViewModels!.AsQueryable();

}

На этом реализация всех классов хранилищ завершена. В следующем разделе будет написан код для удаления, создания и начального заполнения базы данных.

<p id="AutBody_Root1007"><strong>Программная работа с базой данных и миграциями</strong></p>

Свойство Database класса DbContext предлагает программные методы для удаления и создания базы данных, а также для запуска всех миграций. В табл. 23.1 описаны методы, соответствующие указанным операциям.

Как упоминалось в табл. 23.1, метод EnsureCreated() создает базу данных, если она не существует, после чего создает таблицы, столбцы и индексы на основе сущностной модели. Никаких миграций он не применяет.

Если вы используете миграции, тогда при работе с базой данных будут возникать ошибки, и вам придется прибегнуть к уловке (как делалось ранее), чтобы заставить инфраструктуру EF Core "поверить" в то, что миграции были применены. Кроме того, вам нужно будет вручную применить к базе данных любые специальные объекты SQL. В случае работы с миграциями для программного создания базы данных всегда используйте метод Migrate(), а не EnsureCreated().

<p id="AutBody_Root1008"><strong>Удаление, создание и очистка базы данных</strong></p>

Во время разработки нередко полезно удалять и воссоздавать рабочую базу данных и затем заполнять ее выборочными данными. В итоге получается среда, где тестирование (ручное или автоматизированное) может проводиться без опасения нарушить другие тесты из-за изменения данных. Создайте в проекте AutoLot.Dal новый каталог по имени Initialization и поместите в него новый файл класса SampleDatalnitializer.cs. Вот как должны выглядеть операторы using в начале файла:

using System;

using System.Collections.Generic;

using System.Linq;

using AutoLot.Dal.EfStructures;

using AutoLot.Models.Entities;

using AutoLot.Models.Entities.Base;

using Microsoft.EntityFrameworkCore;

using Microsoft.EntityFrameworkCore.Storage;

Сделайте класс открытым и статическим:

namespace AutoLot.Dal.Initialization

{

  public static class SampleDataInitializer

  {

  }

}

Создайте метод по имени DropAndCreateDatabase(), который в качестве единственного параметра принимает экземпляр ApplicationDbContext. Этот метод использует свойство Database экземпляра ApplicationDbContext, чтобы сначала удалить базу данных (с помощью метода EnsureDeleted()) и затем создать ее заново (посредством метода Migrate()):

public static void DropAndCreateDatabase(ApplicationDbContext context)

{

  context.Database.EnsureDeleted();

  context.Database.Migrate();

}

Создайте еще один метод по имени ClearData(), который удаляет все данные из базы данных и сбрасывает значения идентичности для первичного ключа каждой таблицы. Метод проходит по списку сущностей предметной области и применяет свойство Model класса DbContext для получения схемы и имени таблицы, на которые отображается каждая сущность. Затем он выполняет оператор DELETE и сбрасывает идентичность для каждой таблицы, используя метод ExecuteSqlRaw() на свойстве Database класса DbContext:

internal static void ClearData(ApplicationDbContext context)

{

  var entities = new[]

  {

    typeof(Order).FullName,

    typeof(Customer).FullName,

    typeof(Car).FullName,

    typeof(Make).FullName,

    typeof(CreditRisk).FullName

  };

  foreach (var entityName in entities)

  {

    var entity = context.Model.FindEntityType(entityName);

    var tableName = entity.GetTableName();

    var schemaName = entity.GetSchema();

    context.Database.ExecuteSqlRaw($"DELETE FROM {schemaName}.{tableName}");

    context.Database.ExecuteSqlRaw($"DBCC CHECKIDENT (\"{schemaName}.

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

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных