Можно ли добавить таблицу linq в кэш asp .net? - PullRequest
1 голос
/ 15 января 2010

А если так, то есть ли пример в vb .net? Я хочу добавить результат linq в кеш, а затем разрешить посту mvc искать в кеше лучшую производительность ... каждый раз, когда я его реализую, я получаю объект, на который не ссылается ошибка ...

Я запутался, возможно, мне не следовало бы делать это таким образом, но пост mvc будет проверять до 2000 записей, и было бы лучше, если бы он не обращался к базе данных каждый раз.

Спасибо за любую помощь ...

Ответы [ 4 ]

3 голосов
/ 15 января 2010

Хранение запроса LINQ , вероятно, не очень полезно и, вероятно, не будет работать.

Однако, что вы можете сделать относительно безопасно, это сохранить результаты запроса LINQ в кэше ASP.NET.

Под «результатами» я имею в виду, что вы берете объект запроса и вызываете ToList(), что приведет к выполнению запроса.

Что касается любых ошибок, которые вы получаете, пожалуйста, покажите нам примеры кода и точную ошибку и трассировку стека, и мы можем попытаться найти правильное решение для вас.

2 голосов
/ 15 января 2010

Да. Используйте Cache.Insert. Я не знаю VB.NET, но вот несколько базовых советов (см. «Кэширование API, использование объекта кэша»). Просто передайте результат Linq в Insert. Я бы просто старался не формировать ваш результат Linq с анонимными типами, что сделало бы невозможным правильное приведение объекта при извлечении его из кэша.

1 голос
/ 15 января 2010

Во-первых, не вставляйте сам запрос в Cache (оператор from). Вместо этого вставьте результаты запроса.

Далее, имейте в виду, что только потому, что вы вставляете объект в Cache, он не гарантирует, что он будет там при следующем обращении к нему. Фактически, с приоритетом по умолчанию, объект Cache имеет довольно агрессивную политику освобождения объектов.

Вы можете попытаться увеличить приоритет до высокого и посмотреть, поможет ли это.

0 голосов
/ 15 января 2010

Я не уверен почему; вероятно, потому что я использую .Net 4.0, но я так и не смог заставить работать кэш ... продолжал получать объект не ссылался на ошибку.

В любом случае я нашел статью из руководств MVC под названием " Улучшение производительности с помощью кэширования вывода ". В то же время есть несколько примеров, в которых я использовал OutputCache (Duration: = Integer.MaxValue, VaryByParam: = "none") ...

Не уверен, помогает ли это или нет, но в Firebug я вижу, что ответы возвращаются со скоростью 50 мс против более 100 мс. Единственная проблема теперь состоит в том, чтобы разделить файлы, потому что после примерно 500 записей браузер вырубается ...

Спасибо всем за помощь, как обычно !!!

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