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:
parent
e17f7df930
commit
370666cb0e
@ -17,8 +17,9 @@ namespace EnvelopeGenerator.Domain.Entities
|
||||
[Required]
|
||||
public long EnvelopeId { get; init; }
|
||||
|
||||
[ForeignKey("EnvelopeId")]
|
||||
public Envelope? Envelope { get; init; }
|
||||
//TODO: remove NotMapped attribute when EnvelopeId data type is standardized
|
||||
[NotMapped]
|
||||
public Envelope? Envelope { get; set; }
|
||||
|
||||
[Column("RECEIVER_MAIL")]
|
||||
[Required]
|
||||
|
||||
@ -135,11 +135,6 @@ namespace EnvelopeGenerator.Infrastructure
|
||||
.HasForeignKey(erro => erro.AddedWho)
|
||||
.HasPrincipalKey(r => r.EmailAddress);
|
||||
|
||||
modelBuilder.Entity<EnvelopeReceiverReadOnly>()
|
||||
.HasOne(erro => erro.Envelope)
|
||||
.WithMany()
|
||||
.HasForeignKey(erro => (int) erro.EnvelopeId);
|
||||
|
||||
// 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"));
|
||||
|
||||
@ -7,15 +7,46 @@ namespace EnvelopeGenerator.Infrastructure.Repositories
|
||||
{
|
||||
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()
|
||||
{
|
||||
return base.ReadOnly()
|
||||
.Include(erro => erro.Envelope)
|
||||
//TODO: add again when EnvelopeId data type is standardized
|
||||
//.Include(erro => erro.Envelope)
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user