Чтение онлайн

ЖАНРЫ

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

{

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"},

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

Поделиться с друзьями: