1

我正在尝试在链接到数据库查询的 IQUEeryable 上运行 Select。它工作正常,但对于所有被选择的属性,它运行一个单独的查询。

我的代码看起来像这样

IQueryable<MyDataSource> data = [Some Complicated Query I've been Building Up];

var results = data.Select(d => new 
{
A = d.A,
B = d.B,
C = d.C

}).Take(100).ToArray();

现在,这需要很长时间,即使实际的查询不需要那么长时间。当我在其上运行 SQL 分析器时,我发现它为我选择的每个属性运行不同的 SQL 选择过程 - 对于我返回的每个实体(因此在上面的示例中,大约 300 个不同的查询,以及作为执行过滤的实际第一个查询)。

我很确定我在这里做错了什么,这是什么?我希望它运行一个大型查询 - 从数据源中选择正确的列(你知道 Select top 100 dA, dB, dC from [bla bla] ),而不是所有这些混乱。

4

1 回答 1

0

您可以使用 DataLoadOptions 影响延迟/急切加载

这将强制 B 的急切加载

DataLoadOptions options = new DataLoadOptions();
options.LoadWith<a>(a => a.B);
dc.LoadOptions = options;
于 2013-05-08T12:42:53.293 回答