Загрузка данных


1.1 Создание шаблона проекта: 
	dotnet new mvc -n DiscountApi
1.2 Установка необходимых пакетов:
	dotnet add package Microsoft.EntityFrameworkCore.Sqlite
	dotnet add package Microsoft.EntityFrameworkCore.Design
1.3 Строка подключения к бд:
	В файле appsettings.json нужно прописать: 
		"ConnectionStrings": {
			"DefaultConnection": "DataSource=discounts.db"    // discounts.db в корне проекта
		}
1.4 В Program.cs до build.Build(): 
	builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection")));
1.5 Модели: В /Models создать модели по задаче. 
	---------------------------------------------------------
	namespace DiscountApi.Models
	
	public class Brand
	{
		public int ID { get; set; }
		public List<Coupon> Coupons { get; set; } = new();
	}
	----------------------------------------------------------
	namespace DiscountApi.Models
	
	public class Coupon
	{
		public int ID { get; set; }
		public string Code { get; set; } = string.Empty;
	}
1.6 Создать папку /Data/ и файл в ней AppDbContext.cs
	using DiscountApi.Models;
	using Microsoft.EntityFrameworkCore;

	namespace DiscountApi.Data;

	public class AppDbContext : DbContext
	{
    		// Конструктор принимает настройки (провайдер, строку подключения)
    		public AppDbContext(DbContextOptions<AppDbContext> options)
        	: base(options) { }
	
    		// DbSet — это «таблица» в терминах EF Core
    		public DbSet<Brand> Brands => Set<Brand>();
    		public DbSet<Coupon> Coupons => Set<Coupon>();
	}
1.7 В Program.cs после builder.Build() добавить строку: 
	var app = builder.Build();

	// --- Создание БД и сидирование ---
	using (var scope = app.Services.CreateScope())
	{
    		var context = scope.ServiceProvider.GetRequiredService<AppDbContext>();
    		context.Database.EnsureCreated(); // ← вот здесь
	}
	// ---------------------------------

	// ... middleware ...
	app.Run();
1.8 Сидирование: В Data/DbInitilizaer.cs и копируем туда скрипт: https://pastein.ru/t/fyg и в Program.cs вызываем его: https://pastein.ru/t/gyg