You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
4.0 KiB
C#
115 lines
4.0 KiB
C#
using Expedience.Infrastructure.Models;
|
|
using Expedience.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Expedience.Infrastructure
|
|
{
|
|
public class ExpedienceContext : DbContext
|
|
{
|
|
public ExpedienceContext(DbContextOptions<ExpedienceContext> dbContextOptions) : base(dbContextOptions)
|
|
{
|
|
}
|
|
|
|
public DbSet<DutyCompletionResult> DutyCompletionResults { get; set; }
|
|
|
|
public DbSet<DutyMember> DutyMembers { get; set; }
|
|
|
|
public DbSet<Territory> Territories { get; set; }
|
|
|
|
public DbSet<User> Users { get; set; }
|
|
public DbSet<DutyCompletionRecord> DutyCompletionRecords { get; set; }
|
|
public DbSet<DeepDungeonRecord> DeepDungeonRecords { get; set; }
|
|
public DbSet<TopXCompletionResult> TopXRecords { get; set; }
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
modelBuilder.Entity<DutyCompletionResult>(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<DutyMember>(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<User>(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<Territory>(cfg =>
|
|
{
|
|
cfg.ToTable("territory");
|
|
cfg.HasKey(e => new { e.TerritoryId });
|
|
});
|
|
|
|
modelBuilder.Entity<DutyCompletionRecord>()
|
|
.HasNoKey()
|
|
.ToTable(t => t.ExcludeFromMigrations());
|
|
|
|
modelBuilder.Entity<DeepDungeonRecord>()
|
|
.HasNoKey()
|
|
.ToTable(t => t.ExcludeFromMigrations());
|
|
|
|
modelBuilder.Entity<TopXCompletionResult>(cfg =>
|
|
{
|
|
cfg.HasNoKey();
|
|
cfg.ToView("TopXCompletionResults"); // This is just a placeholder name
|
|
|
|
// If you want to include navigation properties:
|
|
cfg.HasOne(e => e.Territory)
|
|
.WithMany()
|
|
.HasForeignKey(e => e.TerritoryId)
|
|
.OnDelete(DeleteBehavior.NoAction);
|
|
|
|
cfg.HasOne(e => e.User)
|
|
.WithMany()
|
|
.HasForeignKey(e => e.UserId)
|
|
.OnDelete(DeleteBehavior.NoAction);
|
|
|
|
// Configure the relationship with DutyMembers
|
|
cfg.HasMany(e => e.DutyMembers)
|
|
.WithOne()
|
|
.HasForeignKey("UploadId") // Assuming UploadId in DutyMember corresponds to Id in TopXCompletionResult
|
|
.OnDelete(DeleteBehavior.NoAction);
|
|
|
|
// Configure the one-to-one relationship with DutyCompletionResult
|
|
cfg.HasOne(e => e.DutyCompletionResult)
|
|
.WithOne()
|
|
.HasForeignKey<TopXCompletionResult>("Id")
|
|
.OnDelete(DeleteBehavior.NoAction);
|
|
});
|
|
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
base.OnModelCreating(modelBuilder);
|
|
}
|
|
}
|
|
}
|