Welcher Typ soll zurückgegeben werden, wenn mehrere Entitäten in der Repository-Ebene abgefragt werden?

An dieser Frage sind folgende Ebenen beteiligt:

Service Layer (Verwenden von IoC zum Aufrufen des Repository)Domänenmodell (POCO / Domänenentitäten, definierte Repository-Schnittstellen)Repository Layer (EF .edmx und implementierte Repositorys)

Oft ist es ganz einfach: Die Repository-Ebene fragt die Datenbank über Entity Framework ab und kehrt zurückIList<SomeDomainEntity> an den Anrufer, der Service Layer war. DasArt return ist ein Typ, der im Domain-Modell definiert ist.

Das Problem, auf das ich stoße, ist, wenn ich POCOs A, B und C abfragen und Daten von allen abrufen muss, die zurückgegeben werden sollen. Da ich keine Logik im Repository verarbeite, muss ich diese Daten zurück an die Service-Schicht senden, um sie zu verarbeiten (entweder direkt oder wahrscheinlicher durch Aufrufen einer Logik im Domänenmodell). Ich habe jedoch keineeinzelner Typ mehr aus den Ergebnissen der Repository-Abfrage an den Aufrufer zurückzukehren.

Ein anonymer Kurstyp behandelt dies in den Beispielen, die ich sehe, aber da ich diese Logik aus zurückgegebenen Daten nicht direkt im Repository verarbeite und sie zurückgeben muss, benötige ich einen physischen Typ für die Rückgabe. Hier sind einige Lösungen, an die ich gedacht habe, die mir jedoch nicht gefallen:

Erstellen Sie eine neue Domänenentität im Domänenmodell, die im Wesentlichen aus allen von mir abgefragten Daten besteht, sodass dieser neue einzelne Typ möglicherweise zurückgegeben wird. Dies scheint falsch zu sein, um willkürliche Typen zu erstellen, um die Abfrageanforderungen zu erfüllen.Lassen Sie die Serviceschicht die einzelnen Repositorys für A-, B- und C-Entitäten separat aufrufen und verarbeiten Sie dann die Daten von jedem zurückgegebenen Objekt. Dies scheint eine Menge zusätzlicher Arbeit zu sein.Erstellen Sie ein ViewModel, um zurückzukehren. Dies scheint mir auch fehl am Platz zu sein. Ich nutze ViewModel-Klassen stark zwischen meiner Service-Schicht und der UI-Schicht, habe sie jedoch nie für die Rückgabe aus dem Repository genutzt.

Ich kann nicht der einzige sein, der mehrere Entitäten abfragt, um eine Zusammenstellung von Daten zu erhalten, die einem Typ hinzugefügt und an den Aufrufer zurückgegeben werden müssen. Was ist eine übliche Vorgehensweise, um mein Problem zu lösen?

Vielen Dank!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage