using Microsoft.EntityFrameworkCore;
using AutoServiceApp.Models;
namespace AutoServiceApp.Data
{
/// <summary>
/// Контекст базы данных автосервиса
/// </summary>
public class AutoServiceDbContext : DbContext
{
public AutoServiceDbContext(DbContextOptions<AutoServiceDbContext> options)
: base(options)
{
}
// Таблицы
public DbSet<Client> Clients { get; set; }
public DbSet<Vehicle> Vehicles { get; set; }
public DbSet<ServiceRequest> ServiceRequests { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// Настройка Client
modelBuilder.Entity<Client>(entity =>
{
entity.HasKey(e => e.Id);
entity.Property(e => e.FullName).IsRequired().HasMaxLength(100);
entity.Property(e => e.Phone).IsRequired().HasMaxLength(20);
entity.HasIndex(e => e.Phone).IsUnique();
});
// Настройка Vehicle
modelBuilder.Entity<Vehicle>(entity =>
{
entity.HasKey(e => e.Id);
entity.Property(e => e.Vin).IsRequired().HasMaxLength(17);
entity.Property(e => e.LicensePlate).IsRequired().HasMaxLength(15);
entity.HasIndex(e => e.Vin).IsUnique();
entity.HasIndex(e => e.LicensePlate).IsUnique();
entity.HasOne(e => e.Client)
.WithMany(c => c.Vehicles)
.HasForeignKey(e => e.ClientId)
.OnDelete(DeleteBehavior.Restrict);
});
// Настройка ServiceRequest
modelBuilder.Entity<ServiceRequest>(entity =>
{
entity.HasKey(e => e.Id);
entity.Property(e => e.RequestNumber).HasMaxLength(50);
entity.Property(e => e.Description).IsRequired().HasMaxLength(1000);
entity.Property(e => e.EstimatedCost).HasColumnType("decimal(18,2)");
entity.Property(e => e.ActualCost).HasColumnType("decimal(18,2)");
entity.HasOne(e => e.Vehicle)
.WithMany(v => v.ServiceRequests)
.HasForeignKey(e => e.VehicleId)
.OnDelete(DeleteBehavior.Restrict);
});
}
}
}