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