2016-03-30 11 views
0

arbeiten, wenn ich dies tun:Splitting ein Entity Framework Linq-Abfrage verursacht enthält nicht

var shipmentQuery = dataAccess.Shipments().Where(x => x.OriginId == originId) 
    .Take(100) 
    .Include(shipment => shipment.Boxes); 

return shipmentQuery; 

Meine Box-Daten werden in der Ergebnismenge aufgenommen. Aber wenn ich dies tun:

var shipmentQuery = dataAccess.Shipments().Where(x => x.OriginId == originId); 

shipmentQuery 
    .Take(100) 
    .Include(shipment => shipment.Boxes); 

Dann wird die Box-Daten nicht enthalten (Boxen ist null für jedes Ergebnis.)

werden, beinhaltet angeblich nicht, wenn Sie die Abfrage brechen?

Und, gibt es das überhaupt, um es auflösen zu können? (Ich möchte ein paar bedingten where-Klauseln hinzuzufügen.)

(I Entity Framework bin mit 6.1.3 Verbindung zu einem SQL Server 2012-Datenbank.)

+0

Hallo, ich denke, in der ersten Abfrage Ihr die DbContext erzählen auch die Boxen Daten zu bekommen, aber auf dem zweiten Ihr sagen, einfach nur die DbContext die Sendungen Daten zu erhalten. –

+0

Sie können auch die Anzahl der ersten Abfrage und der zweiten Abfrage überprüfen. Ich wette, die erste wird 100 und die andere wird mehr als 100, wenn Sie Sendungsdaten mehr als 100 haben. –

+0

In Ihrem zweiten Beispiel tut der 'Take(). Include()' Teil nichts, weil Sie nicht verwenden/das Ergebnis zuweisen –

Antwort

0

Setzen Sie einfach die Anweisung mit der ersten Anweisung enthält. Es fragt die Datenbank an diesem Punkt nicht ab, es ist nur eine Abfragedefinition, sodass Sie sich keine Sorgen darüber machen müssen, dass zusätzliche Datensätze abgerufen werden.

Etwas wie folgt aus:

var shipmentQuery = dataAccess.Shipments().Where(x => x.OriginId == originId) 
    .Include(shipment => shipment.Boxes); 

// Extra query conditions can be applied here 

return shipmentQuery.Take(100); 
Verwandte Themen