У меня есть две таблицы: одна родительская «Point» и одна дочерняя «PointValue», связанные одним внешним ключом «PointID», что позволяет установить связь «один ко многим» в SQL Server 2005.
У меня есть запрос LINQ:
var points = from p in ContextDB.Points
//join v in ContextDB.PointValues on p.PointID equals v.PointID
where p.InstanceID == instanceId
orderby p.PointInTime descending
select new
{
Point = p,
Values = p.PointValues.Take(16).ToList()
};
Как видно из закомментированного соединения и назначения «Значения», таблица «Точка» имеет отношение к «PointValue» (называемые «Точки» и «PointValues» по LINQ).
При переборе IQueryable «var points» (скажем, при привязке его к GridView и т. Д.) Начальный запрос выполняется очень быстро, однако перебор свойства «Значения» выполняется очень медленно. SQL Profiler показывает мне, что для каждого значения в «точках» IQueryable выполняется другой запрос.
Как мне сделать так, чтобы это был один запрос?
Интересно, что начальный запрос становится очень медленным, когда соединение не комментируется.