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


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);
            });
        }
    }
}