using Microsoft.EntityFrameworkCore; using WordVersioning.Api.Models; namespace WordVersioning.Api.Data; public class AppDbContext(DbContextOptions options) : DbContext(options) { public DbSet Documents => Set(); public DbSet DocumentVersions => Set(); protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(entity => { entity.HasKey(x => x.Id); entity.Property(x => x.FileName).HasMaxLength(512); entity.Property(x => x.AddInSignature).HasMaxLength(64); }); modelBuilder.Entity(entity => { entity.HasKey(x => x.Id); // กัน versionNumber ซ้ำตอน upload พร้อมกัน (retry ที่ controller เมื่อชน constraint) entity.HasIndex(x => new { x.DocumentId, x.VersionNumber }).IsUnique(); entity.Property(x => x.ObjectKey).HasMaxLength(1024); entity.Property(x => x.ContentHash).HasMaxLength(64); entity.HasOne(x => x.Document) .WithMany(d => d.Versions) .HasForeignKey(x => x.DocumentId); }); } }