Перепишите запрос LinqToSql, чтобы он возвращал те же экземпляры без LoadWith - PullRequest
0 голосов
/ 24 мая 2011

Я изучаю производительность CompiledQuery, но CompiledQuery имеет аллергию на LoadWith.

using (CustomDataContext myDC = new CustomDataContext())
{
  DataLoadOptions options = new DataLoadOptions();
  options.LoadWith<Customer>(c => c.Orders)
  myDC.LoadOptions = options;

  IQueryable<Customer> query = myDC.Customers.Where(filterExpr);
  List<Customer> result = query.ToList();
  return result;
}

Этот код заполняет свойство Orders каждого экземпляра Customer, загруженного с помощью запроса sql левого соединения.Как я могу переписать запрос без LoadWith, чтобы получить тот же результат (Клиенты заполнили свойство Orders)?

1 Ответ

0 голосов
/ 24 августа 2011

Я нашел способ использовать DataLoadOptions с CompiledQuery.http://www.mrkwatkins.co.uk/Blog/2010/05/16/Improving-LINQ-To-SQL-Performance-Part-2---Combining-Compiled-Queries-And-Load-Options

Он включает в себя наличие экземпляра DataLoadOptions, доступного во время компиляции, удержание этого экземпляра DataLoadOptions в течение всего времени существования экземпляра CompiledQuery и замену этого DataLoadOption на и каждый раз, когдаCompiledQuery запущен.

...