LinqToSql - 在选定结果中包含链接对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LinqToSql - 在选定结果中包含链接对象相关的知识,希望对你有一定的参考价值。

我有两张桌子。与外键相关联。

linked tables

现在我从字段表中获取一行:

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;

服务器将执行两个查询,但在同一个服务器调用中。

以上是关于LinqToSql - 在选定结果中包含链接对象的主要内容,如果未能解决你的问题,请参考以下文章

如何为 ID 名称中包含方括号的选项设置“选定”值? [复制]

需要向后台传递一个对象数据,但对象中包含数组,结果请求报错,500

excel之定位

(mybatis)直接执行sql结果为空,但是session.selectList出的list结果中包含了一个属性为null的bean对象

如何在 Growl 通知中包含超链接?

如何在 Markdown 中包含资产下载链接?