using Expedience.Infrasctructure.Models; using Expedience.Infrastructure.Models; using Expedience.Models; using Microsoft.EntityFrameworkCore; namespace Expedience.Infrastructure { public class ExpedienceContext : DbContext { public ExpedienceContext(DbContextOptions dbContextOptions) : base(dbContextOptions) { } public DbSet DutyCompletionResults { get; set; } public DbSet DutyMembers { get; set; } public DbSet Territories { get; set; } public DbSet Users { get; set; } public DbSet DutyCompletionRecords { get; set; } public DbSet DeepDungeonRecords { get; set; } public DbSet ContentTypeRecords { get; set; } public DbSet TopXRecords { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(cfg => { cfg.ToTable("dutycompletionresult"); cfg.HasKey(e => e.Id); cfg.HasOne(e => e.Territory) .WithMany(e => e.DutyCompletionResults) .HasForeignKey(e => e.TerritoryId); cfg.HasOne(e => e.User) .WithMany(e => e.DutyCompletionResults) .HasForeignKey(e => e.UserId); }); modelBuilder.Entity(cfg => { cfg.ToTable("dutymember"); cfg.HasKey(e => new { e.UploadId, e.GroupNumber, e.MemberNumber }); cfg.HasOne(o => o.DutyCompletionResult) .WithMany(o => o.DutyMembers) .HasForeignKey(o => o.UploadId); }); modelBuilder.Entity(cfg => { cfg.ToTable("user"); cfg.Property(e => e.UserId) .UseIdentityAlwaysColumn() .IsRequired() .ValueGeneratedOnAdd(); cfg.HasKey(e => new { e.UserId }); cfg.HasIndex(e => new { e.WorldId, e.UserName }); cfg.HasIndex(e => new { e.WorldId, e.UserHash }); }); modelBuilder.Entity(cfg => { cfg.ToTable("territory"); cfg.HasKey(e => new { e.TerritoryId }); }); modelBuilder.Entity() .HasNoKey() .ToTable(t => t.ExcludeFromMigrations()); modelBuilder.Entity() .HasNoKey() .ToTable(t => t.ExcludeFromMigrations()); modelBuilder.Entity() .HasNoKey() .ToTable(t => t.ExcludeFromMigrations()); modelBuilder.Entity(cfg => { cfg.HasNoKey(); cfg.ToView("TopXCompletionResults"); // This is just a placeholder name }); base.OnModelCreating(modelBuilder); base.OnModelCreating(modelBuilder); } } }