【发布时间】:2013-03-28 19:43:40
【问题描述】:
EntityModel 定义为: 人员有一个国家/地区的链接
在 LinqPad 中执行此代码时,我看到生成的 SQL 在第一个查询中没有优化(返回所有字段)?我在这里错过了什么或做错了什么?
查询 1 LINQ
var Country = Countries.FirstOrDefault(o => o.Id == 100000581);
var personnelIds = Country.Personnels.Select(p => p.Id).ToArray();
personnelIds.Dump();
查询 1 SQL
exec sp_executesql N'SELECT [t0].[Id], [t0].[Version], [t0].[Identifier], [t0].[Name], , [t0].[UpdatedBy] FROM [Personnel] AS [t0] WHERE [t0].[Country_Id] = @p0',N'@p0 bigint',@p0=100000581
查询 2 LINQ
var Country = Countries.FirstOrDefault(o => o.Id == 100000581);
var personnelIds2 = Personnels.Where(p => p.Country == Country).Select(p => p.Id).ToArray();
personnelIds2.Dump();
查询 2 SQL
exec sp_executesql N'SELECT [t0].[Id] FROM [Personnel] AS [t0] WHERE [t0].[Country_Id] = @p0',N'@p0 bigint',@p0=100000581
使用的数据库是 SQL Express 2008。LinqPad 版本是 4.43.06
【问题讨论】:
标签: linq entity-framework select