using EntityFramework.Exceptions.SqlServer; using Microsoft.EntityFrameworkCore; using SqlDatabaseVectorSearch.Data.Entities; namespace SqlDatabaseVectorSearch.Data; public class ApplicationDbContext(DbContextOptions options) : DbContext(options) { public virtual DbSet Documents { get; set; } public virtual DbSet DocumentChunks { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); optionsBuilder.UseExceptionProcessor(); //optionsBuilder.EnableSensitiveDataLogging(); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(entity => { entity.ToTable("Documents"); entity.HasKey(e => e.Id); entity.Property(e => e.Id).ValueGeneratedOnAdd(); entity.Property(e => e.Name) .IsRequired() .HasMaxLength(255); }); modelBuilder.Entity(entity => { entity.ToTable("DocumentChunks"); entity.HasKey(e => e.Id); entity.Property(e => e.Id).ValueGeneratedOnAdd(); entity.Property(e => e.Content).IsRequired(); entity.Property(e => e.Embedding) .HasColumnType("vector(1536)") .IsRequired(); entity.HasOne(d => d.Document).WithMany(p => p.Chunks) .HasForeignKey(d => d.DocumentId) .OnDelete(DeleteBehavior.Cascade) .HasConstraintName("FK_DocumentChunks_Documents"); }); } }