Язык программирования C#9 и платформа .NET5
Часть 451 из 642 Информация о книге
public static void DropAndCreateDatabase(ApplicationDbContext context){context.Database.EnsureDeleted();context.Database.Migrate();}Создайте еще один метод по имени
, который удаляет все данные из базы данных и сбрасывает значения идентичности для первичного ключа каждой таблицы. Метод проходит по списку сущностей предметной области и применяет свойствоClearData()классаModelдля получения схемы и имени таблицы, на которые отображается каждая сущность. Затем он выполняет операторDbContextи сбрасывает идентичность для каждой таблицы, используя методDELETEна свойствеExecuteSqlRaw()классаDatabase:DbContextinternal 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);");}}На заметку! Метод
фасадного экземпляра базы данных должен применяться осторожно, чтобы избежать потенциальных атак внедрением в SQL. Теперь, когда вы можете удалять и создавать базу данных и очищать данные, пора заняться методами, которые будут добавлять выборочные данные.ExecuteSqlRaw()Инициализация базы данных
Вам предстоит построить свою систему заполнения начальными данными, которую можно запускать по требованию. Первым шагом будет создание выборочных данных и добавление в класс SampleDatalnitializer методов для загрузки выборочных данных в базу.
Создание выборочных данных
Добавьте в каталог
новый файл по имениInitialization. Сделайте его открытым и статическим и поместите в него следующие операторыSampleData.cs:usingusing 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<Make> 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<Car> Inventory => new(){new() {Id = 1, MakeId = 1, Color = "Black", PetName = "Zippy"},new() {Id = 2, MakeId = 2, Color = "Rust", PetName = "Rusty"},new() {Id = 3, MakeId = 3, Color = "Black", PetName = "Mel"},new() {Id = 4, MakeId = 4, Color = "Yellow", PetName = "Clunker"},new() {Id = 5, MakeId = 5, Color = "Black", PetName = "Bimmer"},