2016-10-28 4 views
2

Wenn EF6 Database First verwendet wird und versucht wird, eine gespeicherte Prozedur auszuführen, fügt der automatisch generierte Kontext die erforderliche Methode hinzu, legt jedoch den Rückgabetyp als ObjectResult fest. Zum Beispiel der folgende Definition:EF 6 DataBase Erste gespeicherte Prozedur

public virtual ObjectResult<USP_GetItemDetails_Result> USP_GetItemDetails(int? itemNbr, int? siteNbr) 

Hat den Rückgabetyp:

return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<USP_GetItemDetails_Result>("USP_GetItemDetails", itemNbr, siteNbr); 

Gibt es trotzdem, dieses Ergebnis als nur die konkrete Klasse zu verwirklichen, anstatt das Ergebnis als Object zu schicken? Die nächste Schicht in meinem Stapel kennt Entity Framework nicht.

+0

Wenn es relevant ist, ist der Rückgabetyp der gespeicherten Prozedur ein komplexer Typ, der keiner der DB-Entitäten entspricht (es handelt sich um eine Verschmelzung einiger lokaler Informationen und Daten von einem verbundenen Server) – Sykomaniac

+0

warum nicht das Ergebnis zuordnen dich in eine neue Klasse? –

+0

könnte ich das tun, aber dann würde ich später wieder zuordnen, wenn ich die Ergebnisse als dto über Web-API zurückgeben. – Sykomaniac

Antwort

1

Stellt ObjectResult unter der Haube heraus ist ein IEnumerable. Eine einfache ToList bedeutet, dass ich IEnumerable auf die nächste Ebene zurückgeben kann.

Verwandte Themen