57 lines
1.9 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|