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.

53 lines
1.5 KiB
C#

using Expedience.Api.Db.Models;
using Microsoft.EntityFrameworkCore;
namespace Expedience.Api.Db
{
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<User> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<DutyCompletionResult>(cfg =>
{
cfg.ToTable(nameof(DutyCompletionResult));
cfg.HasKey(e => e.Id);
});
modelBuilder.Entity<DutyMember>(cfg =>
{
cfg.ToTable(nameof(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(nameof(User));
cfg.Property(e => e.UserId)
.UseIdentityAlwaysColumn()
.IsRequired()
.ValueGeneratedOnAdd();
cfg.HasKey(e => new { e.UserId });
});
base.OnModelCreating(modelBuilder);
}
}
}