refactor: EnvelopeReceiverReadOnlyRepository so angepasst, dass die Einbindung von Envelope bis zur Klärung des ID-Typs verschoben wird

- Konstruktor von EnvelopeReceiverReadOnlyRepository angepasst, um IEnvelopeRepository zu akzeptieren.
 - Die Zeile Include(erro => erro.Envelope) in der Methode ReadOnly auskommentiert, bis der EnvelopeId-Typ standardisiert ist.
 - Methoden IncludeEnvelope hinzugefügt, um Envelope manuell für jedes EnvelopeReceiverReadOnly einzubinden.
 - Markierte manuelle Einbindungs-Methoden als veraltet, um durch IQueryable.Include ersetzt zu werden, sobald der EnvelopeId-Typ geklärt ist.
This commit is contained in:
Developer 02 2024-10-01 12:54:27 +02:00
parent e17f7df930
commit 370666cb0e
3 changed files with 36 additions and 9 deletions

View File

@ -17,8 +17,9 @@ namespace EnvelopeGenerator.Domain.Entities
[Required] [Required]
public long EnvelopeId { get; init; } public long EnvelopeId { get; init; }
[ForeignKey("EnvelopeId")] //TODO: remove NotMapped attribute when EnvelopeId data type is standardized
public Envelope? Envelope { get; init; } [NotMapped]
public Envelope? Envelope { get; set; }
[Column("RECEIVER_MAIL")] [Column("RECEIVER_MAIL")]
[Required] [Required]

View File

@ -135,11 +135,6 @@ namespace EnvelopeGenerator.Infrastructure
.HasForeignKey(erro => erro.AddedWho) .HasForeignKey(erro => erro.AddedWho)
.HasPrincipalKey(r => r.EmailAddress); .HasPrincipalKey(r => r.EmailAddress);
modelBuilder.Entity<EnvelopeReceiverReadOnly>()
.HasOne(erro => erro.Envelope)
.WithMany()
.HasForeignKey(erro => (int) erro.EnvelopeId);
// Configure entities to handle database triggers // Configure entities to handle database triggers
modelBuilder.Entity<Envelope>().ToTable(tb => tb.HasTrigger("TBSIG_ENVELOPE_HISTORY_AFT_INS")); modelBuilder.Entity<Envelope>().ToTable(tb => tb.HasTrigger("TBSIG_ENVELOPE_HISTORY_AFT_INS"));
modelBuilder.Entity<EnvelopeHistory>().ToTable(tb => tb.HasTrigger("TBSIG_ENVELOPE_HISTORY_AFT_INS")); modelBuilder.Entity<EnvelopeHistory>().ToTable(tb => tb.HasTrigger("TBSIG_ENVELOPE_HISTORY_AFT_INS"));

View File

@ -7,15 +7,46 @@ namespace EnvelopeGenerator.Infrastructure.Repositories
{ {
public class EnvelopeReceiverReadOnlyRepository : CRUDRepository<EnvelopeReceiverReadOnly, long, EGDbContext>, IEnvelopeReceiverReadOnlyRepository public class EnvelopeReceiverReadOnlyRepository : CRUDRepository<EnvelopeReceiverReadOnly, long, EGDbContext>, IEnvelopeReceiverReadOnlyRepository
{ {
public EnvelopeReceiverReadOnlyRepository(EGDbContext dbContext) : base(dbContext, dbContext.EnvelopeReceiverReadOnlys) private readonly IEnvelopeRepository _envRepo;
public EnvelopeReceiverReadOnlyRepository(EGDbContext dbContext, IEnvelopeRepository envelopeRepository) : base(dbContext, dbContext.EnvelopeReceiverReadOnlys)
{ {
_envRepo = envelopeRepository;
} }
protected override IQueryable<EnvelopeReceiverReadOnly> ReadOnly() protected override IQueryable<EnvelopeReceiverReadOnly> ReadOnly()
{ {
return base.ReadOnly() return base.ReadOnly()
.Include(erro => erro.Envelope) //TODO: add again when EnvelopeId data type is standardized
//.Include(erro => erro.Envelope)
.Include(erro => erro.Receiver); .Include(erro => erro.Receiver);
} }
public async override Task<IEnumerable<EnvelopeReceiverReadOnly>> ReadAllAsync()
{
var erros = await base.ReadAllAsync();
return await IncludeEnvelope(erros);
}
//TODO: Use IQueryable.Include instead of this when ID type is clarified.
[Obsolete("Use IQueryable.Include instead of this when ID type is clarified.")]
private async Task<IEnumerable<EnvelopeReceiverReadOnly>> IncludeEnvelope(params EnvelopeReceiverReadOnly[] erros)
{
foreach (var erro in erros)
erro.Envelope = await _envRepo.ReadByIdAsync((int) erro.EnvelopeId);
return erros;
}
//TODO: Use IQueryable.Include instead of this when ID type is clarified.
[Obsolete("Use IQueryable.Include instead of this when ID type is clarified.")]
private async Task<T> IncludeEnvelope<T>(T erros)
where T : IEnumerable<EnvelopeReceiverReadOnly>
{
foreach (var erro in erros)
erro.Envelope = await _envRepo.ReadByIdAsync((int)erro.EnvelopeId);
return erros;
}
} }
} }