2016-03-30 60 views
0

如果我這樣做:拆分實體框架LINQ查詢導致包括到不行

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

return shipmentQuery; 

我框數據包括在結果集。但是,如果我這樣做:

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

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

然後框數據不包括(箱是空的每個結果。)

是包括應該,如果你打破了查詢到不行?

而且,有無法分解它嗎? (我想補充一些有條件的where子句。)

(我使用實體框架6.1.3連接到SQL Server 2012數據庫。)

+0

你好,我想在第一個查詢你告訴的DbContext拿到箱子的數據很好,但在第二個你只是簡單地告訴的DbContext,以獲得出貨量數據。 –

+0

您也可以檢查第一個查詢和第二個查詢的計數。我敢打賭,第一個將是100,另一個將超過100,如果您的貨件數據超過100個。 –

+0

在第二個示例中,Take().include()部分不會執行任何操作,因爲您不使用/分配結果。 –

回答

0

只要把包括與第一條語句聲明。它實際上不會在那個時候查詢數據庫,它只是一個查詢定義,所以你不必擔心額外的記錄被拉取。

事情是這樣的:

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

// Extra query conditions can be applied here 

return shipmentQuery.Take(100);