我有两张桌子。与外键相关联。
现在我从字段表中获取一行:
IField Field = from f in DataContext.fields
where f.mapId == mapId && f.x1 == x && f.y1 == y
select f;
使用此行我需要链接表fieldViews中的一些数据。所以我只是这样做:
[..] Field.FieldViews [..]
根据SQL Profiler 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在第一个查询中包含此链接对象?
使用DataLoadOptions,您可以指定L2S将FieldViews记录与Fields一起加载。
在查询之前插入这样的内容:
var dlo = new DataLoadOptions();
dlo.LoadWith<Fields>(f => f.FieldViews);
DataContext.LoadOptions = dlo;
服务器将执行两个查询,但在同一个服务器调用中。