feat(EGDbContext): Eindeutige Indizes und Beziehungen für die Entitäten „Envelope“, „Receiver“ und „DocumentStatus“ hinzufügen

- Eindeutiger Index für „Envelope.Uuid“ hinzugefügt
- Eindeutige Indizes für „Receiver.Signature“ und „Receiver.EmailAddress“ hinzugefügt
- Beziehungen von „DocumentStatus“ zu „Envelope.Uuid“ und „Receiver“ (Signature und EmailAddress) konfiguriert
- Entitätsbeschränkungen für die Datenintegrität verbessert
This commit is contained in:
tekh 2025-08-25 15:32:48 +02:00
parent fb07d9151f
commit 20b6b328f5

View File

@ -97,10 +97,17 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
modelBuilder.Entity<DocumentReceiverElement>();
modelBuilder.Entity<DocumentStatus>();
modelBuilder.Entity<EmailTemplate>();
modelBuilder.Entity<Envelope>();
modelBuilder.Entity<Envelope>()
.HasIndex(e => e.Uuid)
.IsUnique();
modelBuilder.Entity<EnvelopeHistory>();
modelBuilder.Entity<EnvelopeType>();
modelBuilder.Entity<Receiver>();
modelBuilder.Entity<Receiver>()
.HasIndex(e => e.Signature)
.IsUnique();
modelBuilder.Entity<Receiver>()
.HasIndex(e => e.EmailAddress)
.IsUnique();
modelBuilder.Entity<EmailOut>();
// Configure the one-to-many relationship of Envelope
@ -145,6 +152,24 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.HasForeignKey(erro => erro.AddedWho)
.HasPrincipalKey(r => r.EmailAddress);
modelBuilder.Entity<DocumentStatus>()
.HasOne(ds => ds.Envelope)
.WithMany()
.HasForeignKey(ds => ds.EnvelopeId)
.HasPrincipalKey(e => e.Uuid);
modelBuilder.Entity<DocumentStatus>()
.HasOne(ds => ds.Receiver)
.WithMany()
.HasForeignKey(ds => ds.ReceiverId)
.HasPrincipalKey(e => e.Signature);
modelBuilder.Entity<DocumentStatus>()
.HasOne(ds => ds.Receiver)
.WithMany()
.HasForeignKey(ds => ds.ReceiverId)
.HasPrincipalKey(e => e.EmailAddress);
// Configure entities to handle database triggers
void AddTrigger<T>() where T : class => _triggers
.Where(t => t.Key == typeof(T).Name)