Kombinieren und projizieren verschiedene Entitätstypen in ein einzelnes ObjektC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Kombinieren und projizieren verschiedene Entitätstypen in ein einzelnes Objekt

Post by Anonymous »

ein

Code: Select all

.ThenInclude(...)
. Dieses Mal muss ich jedoch mehrere verschiedene Gruppen von Entitäten abrufen, die in 1: 1 oder 1: N -Beziehungen innerhalb jeder Gruppe liegen. Das Projekt selbst ist in Controller/Service/Repository-Ebenen unterteilt.

Code: Select all

public class CombinedCalculationRepository
{
private readonly DbSet
 _plannedCalculations;
private readonly DbSet _updatingCalculations;
private readonly DbSet _eqaulCalculations;

public CombinedCalculationRepository(MyDbContext context) { /* assigning DbSets */ }

public IQueryable GetCombinedCalculations()
{
IQueryable query = GetPlannedCalculations()
.Union(GetUpdatingCalculations())
.Union(GetEqualCalculations());

return query;
}

private IQueryable GetPlannedCalculations()
{
return _plannedCalculations
.Include(p => p.Owners)
.Include(p => p.Submitter)
.Select(p => ToCombinedCalculationDto(p));
}

private IQueryable GetUpdatingCalculations()
{
return _updatingCalculations
.Include(p => p.Owners)
.Include(p => p.Submitter)
.Select(p => ToCombinedCalculationDto(p));
}

private IQueryable GetEqualCalculations()
{
return _eqaulCalculations
.Include(p => p.Owners)
.Include(p => p.Submitter)
.Select(p => ToCombinedCalculationDto(p));
}

private CombinedCalculationDto ToCombinedCalculationDto(PlannedCalculation p) => new CombinedCalculationDto
{
//Mapping of common properties
};

private CombinedCalculationDto ToCombinedCalculationDto(UpdatingCalculation u) => new CombinedCalculationDto
{
//Mapping of common properties
};

private CombinedCalculationDto ToCombinedCalculationDto(EqualCalculation e) => new CombinedCalculationDto
{
//Mapping of common properties
};
}
< /code>
Wenn ich sie jedoch ausführe und versuche, Daten abzurufen, erhalte ich System. Erwägen Sie, den festgelegten Vorgang vor dem letzten 'Select' -Anruf zu verschieben.GetCombinedCalculations()
wird von einem Dienst aufgerufen, der für die Filterung, Sortierung und Paginierung der Daten verantwortlich ist. Daher versuche ich, bei iQueryable zu bleiben. Um es optimiert zu halten, ist das Ziel, alles in der Datenbank zu tun und dann die Abfrage über .tolistasync () zu führen. Entitäten in eine iQueryable, ohne die Abfrage zu materialisieren?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post