75 lines
2.8 KiB
C#
75 lines
2.8 KiB
C#
using DigitalData.EmailProfilerDispatcher.Domain.Entities;
|
|
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>();
|
|
modelBuilder.Entity<EmailOut>();
|
|
|
|
// 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);
|
|
|
|
modelBuilder.Entity<EnvelopeHistory>()
|
|
.HasOne(eh => eh.Sender)
|
|
.WithMany()
|
|
.HasForeignKey(eh => eh.UserReference)
|
|
.HasPrincipalKey(e => e.Email);
|
|
|
|
// 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"));
|
|
|
|
//configure model builder for user manager tables
|
|
modelBuilder.ConfigureUserManager();
|
|
|
|
base.OnModelCreating(modelBuilder);
|
|
}
|
|
}
|
|
} |