Common Table Expression in Entity Framework
Habe ich diese Abfrage in Sql Server, die ich brauche, um zu konsumieren, in EntityFramework, Also wie kann ich schreiben Sie eine EntityFramwork code, die das gleiche Ergebnis wie diese
WITH cte AS
(
SELECT *
FROM StockGroups
WHERE GroupParent ='Stationery'
UNION ALL
SELECT g.*
FROM StockGroups g
JOIN cte
ON g.GroupParent = cte.GroupName
)
SELECT *
FROM cte
Ich weiß nicht, wie es zu konvertieren in der EF, also versuchte ich mit join.
from a in db.StockGroups
join b in db.StockGroups on new { GroupParent = a.GroupParent } equals new { GroupParent = b.GroupName }
where
b.GroupName == "Stationery"
select new {
a.GroupName,
a.GroupParent,
Column1 = b.GroupName,
Column2 = b.GroupParent
}
Aber das Ergebnis ist nicht dasselbe, wie als rekursive CTE.
- Verwenden Sie mehr linq 😛
Du musst angemeldet sein, um einen Kommentar abzugeben.
EF unterstützt keine rekursiven Allgemeinen Tabellenausdruck ist. Verwenden Sie eine Ansicht oder eine Tabellenwertfunktion.
Können Sie nicht verwenden, CTE Rekursion in Entity Framework.
Input bekommt von den anderen Experten über SO, ich habe mit meine eigene Art und Weise, dies zu erreichen.
'Customer'
wird ein parameter, dann wird dieser nicht umgewandelt werden kann, auf einen Blick.Verwenden Sie die gespeicherte Prozedur und rufen Sie die gespeicherte Prozedur, durch EF
Ich glaube nicht, dass es Unterstützung für rekursive Allgemeine Tabellenausdrücke in LINQ noch in EF. Die Lösung ist, um der CTE als eine Ansicht. Der Artikel auf Rekursiven bzw. hierarchischen Abfragen mit EF Code First und Migrationen zeigt, wie die Bereitstellung einer solchen Sicht mit EF code first-Migrationen. Rekursive und hierarchische Abfragen mit EF Code First und Migrationen
Original-Quelle:
https://stackoverflow.com/a/11929928/3850405