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}.

      {tableName}\", RESEED, 1);");

  }

}

На заметку! Метод ExecuteSqlRaw фасадного экземпляра базы данных должен применяться осторожно, чтобы избежать потенциальных атак внедрением в SQL. Теперь, когда вы можете удалять и создавать базу данных и очищать данные, пора заняться методами, которые будут добавлять выборочные данные.

<p id="AutBody_Root1009"><strong>Инициализация базы данных</strong></p>

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

<p id="AutBody_Root1010"><strong>Создание выборочных данных</strong></p>

Добавьте в каталог Initialization новый файл по имени SampleData.cs. Сделайте его открытым и статическим и поместите в него следующие операторы using:

using System.Collections.Generic;

using AutoLot.Dal.Entities;

using AutoLot.Dal.Entities.Owned;

namespace AutoLot.Dal.Initialization

{

  public static class SampleData

  {

  }

}

Класс SampleData содержит пять статических методов, которые создают выборочные данные:

{

  new {Id = 1, PersonalInformation = new {FirstName = "Dave",

                                              LastName = "Brenner"}},

  new {Id = 2, PersonalInformation = new {FirstName = "Matt",

                                              LastName = "Walton"}},

  new {Id = 3, PersonalInformation = new {FirstName = "Steve",

                                              LastName = "Hagen"}},

  new {Id = 4, PersonalInformation = new {FirstName = "Pat",

                                              LastName = "Walton"}},

  new {Id = 5, PersonalInformation = new {FirstName = "Bad",

                                              LastName = "Customer"}},

};

public static List Makes => new

{

  new {Id = 1, Name = "VW"},

  new {Id = 2, Name = "Ford"},

  new {Id = 3, Name = "Saab"},

  new {Id = 4, Name = "Yugo"},

  new {Id = 5, Name = "BMW"},

  new {Id = 6, Name = "Pinto"},

};

public static List Inventory => new

{

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

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