Grüße,Wie sortieren verbundene Unternehmen mit eifrigen Läden in ADO.NET Entity Framework
die Beispieltabellen Northwind Unter Berücksichtigung Kunden, Aufträge und Orderdetails ich die verbundenen Unternehmen in den Tabellen oben genannten entsprechenden eifrig Last möchte und Trotzdem muss ich die untergeordneten Entitäten in der Datenbank bestellen, bevor Entitäten abgerufen werden.
Grund Fall:
var someQueryable = from customer in northwindContext.Customers.Include("Orders.OrderDetails")
select customer;
aber ich brauche auch Aufträge und Orderdetails auf der Datenbankseite zu sortieren (vor diejenigen Entitäten in den Speicher zu holen) in Bezug auf einige zufällige Spalte dieser Tabellen. Ist es möglich ohne irgendeine Projektion, wie es in T-SQL ist? Es spielt keine Rolle, ob die Lösung e-SQL oder LINQ zu Entitäten verwendet. Ich suchte im Internet, aber ich war nicht zufrieden mit den Antworten, die ich fand, da sie hauptsächlich Daten auf einen anonymen Typ projizieren und dann diesen anonymen Typ erneut abfragen, um die untergeordneten Entitäten in der von Ihnen gewünschten Reihenfolge zu erhalten. Auch die Verwendung von CreateSourceQuery() scheint für mich keine Option zu sein, da ich die Daten auf der Datenbankseite abrufen muss, indem ich eifrig lade, aber einfach untergeordnete Entitäten anordne. Das ist, ich möchte das "ORDER BY" tun, bevor Sie eine Abfrage ausführen und dann die Entitäten in der Reihenfolge abrufen, die ich möchte. Vielen Dank im Voraus für jede Anleitung. Als persönliche Anmerkung entschuldigen Sie bitte die direkte Sprache, da ich bei Microsoft ziemlich angepisst bin, weil ich das EF in einer so unreifen Form veröffentlicht habe, sogar im Vergleich zu Linq to SQL (von dem sie langsam wegzukommen scheinen). Ich hoffe, dass dieses EF-Ding in der Release-Version von .NET FX 4.0 viel besser und ohne signifikante Bugs wird.
Warum brauchen Sie 'select new {SomeField = c.SomeField}' anstelle von 'select c.SomeField'? Wenn du die Orden willst, warum ist es dann nicht "select o"? –
könnte es sein. Aber wenn Sie nicht jede Spalte (häufig) benötigen, ist es viel effizienter, nur das auszuwählen, was Sie brauchen. Der selbe Grund, warum Sie normalerweise nicht 'SELECT *' in SQL schreiben (naja, * ich * tue das überhaupt nicht ...). –