KoogleApp/Koogle.Infrastrcuture/Data/AppDbContext.cs

57 lines
1.9 KiB
C#

using KoogleApp.Entities;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
namespace KoogleApp.Data
{
public class AppDbContext(DbContextOptions<AppDbContext> options) : IdentityDbContext<ApplicationUser>(options)
{
public DbSet<Player> Players { get; set; } = null!;
public DbSet<PlayerExpense> PlayerExpenses { get; set; }
public DbSet<Day> Days { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Player>(entity =>
{
entity.HasKey(e => e.Id);
entity.Property(e => e.Name).IsRequired().HasMaxLength(200);
//entity.Property(e => e.Description).HasMaxLength(1000);
entity.Property(e => e.ModifiedBy).HasMaxLength(100);
// 1:n Beziehung zu Positionen
entity.HasMany(e => e.Expenses)
.WithOne(p => p.Player)
.HasForeignKey(p => p.PlayerId)
.OnDelete(DeleteBehavior.Cascade); // Cascade Delete
});
modelBuilder.Entity<PlayerExpense>(entity =>
{
entity.HasKey(e => e.Id);
entity.Property(e => e.Name).IsRequired().HasMaxLength(200);
//entity.Property(e => e.Quantity).HasPrecision(18, 2);
//entity.Property(e => e.UnitPrice).HasPrecision(18, 2);
//entity.Property(e => e.Unit).HasMaxLength(50);
// Index für bessere Performance
entity.HasIndex(e => e.PlayerId);
});
modelBuilder.Entity<Day>(entity =>
{
entity.HasKey(e => e.Id);
// Index für bessere Performance
entity.HasIndex(e => e.PostDate);
});
base.OnModelCreating(modelBuilder);
}
}
}