2009-10-01 36 views
1

我有兩個表。與外鍵鏈接。LinqToSql - 在選定的結果中包含鏈接的對象

linked tables http://i33.tinypic.com/15znlw1.jpg

現在,我從外地表中讀取行:

IField Field = from f in DataContext.fields 
       where f.mapId == mapId && f.x1 == x && f.y1 == y 
       select f; 

與此行,我需要從鏈接表fieldViews一些數據工作。所以我只是做這樣的事情:

[..] Field.FieldViews [..] 

根據SQL事件探查器Linq To Sql生成以下查詢。

SELECT 
    [t0].[fieldId], 
    [t0].[mapId], 
    [t0].[x1], 
    [t0].[y1] 
FROM 
    [dbo].[fields] AS [t0] 
WHERE 
    ([t0].[mapId] = @p0) AND 
    ([t0].[x1] = @p1) AND 
    ([t0].[y1] = @p2) 


SELECT 
    [t0].[fieldViewId], 
    [t0].[fieldId], 
    [t0].[mapUserId] 
FROM 
    [dbo].[fieldViews] AS [t0] 
WHERE 
    [t0].[fieldId] = @p0 

但我不想2個查詢。如何讓LinqToSql在第一個查詢中包含這個鏈接的對象?

回答

3

使用DataLoadOptions,您可以指定L2S將FieldViews記錄與字段一起加載。

插入像這樣的查詢之前:

var dlo = new DataLoadOptions(); 
dlo.LoadWith<Fields>(f => f.FieldViews); 
DataContext.LoadOptions = dlo; 

服務器將執行兩個查詢,但相同的呼叫服務器內。

+0

謝謝!這完全按預期工作! – rkusa

相關問題