64 lines
2.4 KiB
C#

using EnvelopeGenerator.Domain.Entities;
using Microsoft.EntityFrameworkCore;
namespace DigitalData.UserManager.Infrastructure.Repositories
{
public class EGDbContext : DbContext
{
public EGDbContext(DbContextOptions<EGDbContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Config>().HasNoKey();
modelBuilder.Entity<EnvelopeReceiver>()
.HasKey(er => new { er.EnvelopeId, er.ReceiverId });
modelBuilder.Entity<EnvelopeDocument>();
modelBuilder.Entity<DocumentReceiverElement>();
modelBuilder.Entity<DocumentStatus>();
modelBuilder.Entity<EmailTemplate>();
modelBuilder.Entity<Envelope>();
modelBuilder.Entity<EnvelopeCertificate>();
modelBuilder.Entity<EnvelopeHistory>();
modelBuilder.Entity<EnvelopeType>();
modelBuilder.Entity<Receiver>();
modelBuilder.Entity<UserReceiver>();
// Configure the one-to-many relationship of Envelope
modelBuilder.Entity<Envelope>()
.HasMany(e => e.Documents)
.WithOne()
.HasForeignKey(ed => ed.EnvelopeId);
modelBuilder.Entity<Envelope>()
.HasMany(e => e.History)
.WithOne()
.HasForeignKey(eh => eh.EnvelopeId);
modelBuilder.Entity<EnvelopeDocument>()
.HasMany(ed => ed.Elements)
.WithOne(e => e.Document)
.HasForeignKey(e => e.DocumentId);
modelBuilder.Entity<DocumentReceiverElement>()
.HasOne(dre => dre.Document)
.WithMany(ed => ed.Elements)
.HasForeignKey(dre => dre.DocumentId);
modelBuilder.Entity<EnvelopeHistory>()
.HasOne(eh => eh.Receiver)
.WithMany()
.HasForeignKey(eh => eh.UserReference)
.HasPrincipalKey(e => e.EmailAddress);
// Configure entities to handle database triggers
modelBuilder.Entity<Envelope>().ToTable(tb => tb.HasTrigger("TBSIG_ENVELOPE_HISTORY_AFT_INS"));
modelBuilder.Entity<EnvelopeHistory>().ToTable(tb => tb.HasTrigger("TBSIG_ENVELOPE_HISTORY_AFT_INS"));
base.OnModelCreating(modelBuilder);
}
}
}