using DXApp.TemplateKitProject.Models; using Microsoft.EntityFrameworkCore; namespace DXApp.TemplateKitProject.Data; public class AppDbContext(DbContextOptions options) : DbContext(options) { public DbSet ZugferdInvoices { get; set; } public DbSet InvoiceAttachments { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity(entity => { // Index für Performance-Optimierung der Rechnungsliste entity.HasIndex(e => e.ImportedAt) .HasDatabaseName("IX_ZugferdInvoices_ImportedAt"); // Index für Duplikatprüfung entity.HasIndex(e => new { e.InvoiceNumber, e.SellerTaxId }) .HasDatabaseName("IX_ZugferdInvoices_InvoiceNumber_SellerTaxId"); // Decimal-Präzision explizit festlegen (behebt EF Core Warnung) entity.Property(e => e.TotalAmount) .HasColumnType("decimal(18,2)"); entity.Property(e => e.TaxAmount) .HasColumnType("decimal(18,2)"); // Relationship: One-to-Many mit InvoiceAttachments entity.HasMany(e => e.Attachments) .WithOne(a => a.ZugferdInvoice) .HasForeignKey(a => a.ZugferdInvoiceId) .OnDelete(DeleteBehavior.Cascade); }); modelBuilder.Entity(entity => { // Index für schnelleres Laden der Attachments einer Rechnung entity.HasIndex(e => e.ZugferdInvoiceId) .HasDatabaseName("IX_InvoiceAttachments_ZugferdInvoiceId"); }); } }