LINQ to SQL и скомпилированные запросы - PullRequest
2 голосов
/ 03 февраля 2011

У меня есть скомпилированный запрос, который возвращает IQueryable<tblMyTable>. Если я выполню скомпилированный запрос, кэшируются ли результаты в передаваемом мною DataContext?

using(context)
{
    var count = MyCompiledQuery(context).Count();

    //Does the call to MyCompiledQuery execute against the database again, or does it go to the context for results?
    var first10 = MyCompiledQuery(context).Take(10);
}

Это приложение .NET 3.5, использующее C #.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011

Да, запрос выполняется снова. Вы можете увидеть это, запустив SQL Profiler параллельно вашему приложению.

0 голосов
/ 04 февраля 2011

Единственный способ заставить это работать - сначала получить все записи и выполнить ToList () или ToArray (), а затем Count () и Take (10) будут работать со списком или массивом.Но я предполагаю, что вы не хотите получать все результаты.

Одна оптимизация, которую вы могли бы здесь сделать, - это явно открывать и закрывать соединение, но я читал, что пул соединений настолько эффективен, что выможет не заметить большой разницы.

Эта информация может прояснить ситуацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...