Ich kann das nicht ganz herausfinden. Ich habe eine Tabelle namens Mitarbeiter mit und Id-Feld. Die Tabelle enthält auch ein ManagerId-Feld mit einem Fremdschlüssel, der auf das ID-Feld des Mitarbeiters verweist. Wenn ich die Tabelle als Entität zu meinem Entitätsdatenmodell hinzufüge, erstellt sie die neue Employee-Entität mit einem EmployeeChildren-Auflistungselement und einem EmployeeParent-Element. Ich kann alle Angestellten abrufen und sie in eine neue Instanz der Entität Employee einfügen lassen. Die Entität der Angestellten hat viele Kinder, jede untergeordnete Entität kann viele eigene Kinder haben und jede hat einen Zeiger zurück auf ihre Eltern.Linq zu Entities - Entity mit "Selbstreferenz" von Stored Procedure abrufen
Was ich jetzt tun muss, ist eine Teilmenge dieser Mitarbeiter abrufen eine gespeicherte Prozedur verwenden. Wenn ich jetzt nach Mitarbeiter John Doe suche, der 2 Personen über ihm hat, gibt die gespeicherte Prozedur 3 Zeilen zurück.
EmployeeID MANAGERID Namen
1 null Bill
2 1 Jane
3 2 John Doe
Hier ist mein Code den Abruf zu tun:
using (var entity = new TimeEntryEntities())
{
var employees =
from E in entity.EmployeeSearch(search)
orderby E.Name
select E;
return employees.ToList<Employee>();
}
Rechts Jetzt gibt dieser Code 3 separate Entitäten zurück. Wie kann ich sie zu einem zusammenfassen lassen?
Funktioniert das wie erwartet, wenn Sie die gespeicherte Prozedur nicht verwenden? Wenn Sie einen einzelnen Mitarbeiter direkt mit einer LINQ-Abfrage abrufen, werden die Sammlungen "Manager" und "Berichte" so ausgefüllt, wie sie sein sollten? –
Es funktioniert, aber es kommt nicht so zurück, wie ich es brauche. Es ruft den Mitarbeiter ab und diese Entität erhält eine übergeordnete Entität. Die übergeordnete Entität hat einen Elternteil und das Kind ... und so weiter. Ich brauche es, um beim obersten Elternteil zu beginnen, nicht beim untergeordneten Kind. Ich hoffe das ergibt Sinn. –