Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 кэширование объектов в Linq to Sql  [new]
behod
Member

Откуда:
Сообщений: 18
LINQ to SQL кэширует объекты (после апдейта даннных в базе, linq выдает все равно старый результат)
Здесь [url=]http://geekswithblogs.net/DanBedassa/archive/2009/02/12/linq-to-sql-cache-issue.aspx[/url] описана проблему чуть подробнее и говорится что помогает

myContext.ObjectTrackingEnabled = false;

но отключение трекинга объектов так же несет за собой не очень приятные последствия.

Есть ли какой-нибудь другой способ отключить кэширование?
И собственно говоря не совсем понятно зачем это кеширование сделано — получается, что один клиент меняет данные, а другой клиент все еще видит старые данные до пересоздания контекста (или же надо постоянно контекст пересоздавать?)
24 фев 10, 03:17    [8383634]     Ответить | Цитировать Сообщить модератору
 Re: кэширование объектов в Linq to Sql  [new]
behod
Member

Откуда:
Сообщений: 18
линк на страницу неправильно вставил вот:
http://geekswithblogs.net/DanBedassa/archive/2009/02/12/linq-to-sql-cache-issue.aspx
24 фев 10, 03:19    [8383635]     Ответить | Цитировать Сообщить модератору
 Re: кэширование объектов в Linq to Sql  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
ObjectTrackingEnabled это не кеширование, это включение отслеживания объектов.
Хотите кеширование - делайте ручками.
24 фев 10, 10:01    [8384012]     Ответить | Цитировать Сообщить модератору
 Re: кэширование объектов в Linq to Sql  [new]
behod
Member

Откуда:
Сообщений: 18
я знаю, что это не кеширование, но факт остается фактом, linq не обновляет данные (видимо где-то кешируются объекты трекинга) пока не пересоздать контекст, может я что-то не так делаю.

Плюс с чего вы взяли что мне надо это кеширование, я же наоборот пишу, что мне надо его убрать. И собственно я интересуюсь, можно ли это как-то убрать (может какой-нибудь хитрый параметр) или сама идеология linq это не позволяет (тогда я ее не очень понимаю)
24 фев 10, 15:00    [8386152]     Ответить | Цитировать Сообщить модератору
 Re: кэширование объектов в Linq to Sql  [new]
МСУ
Member [заблокирован]

Откуда: http://codearticles.ru
Сообщений: 31089
behod
я знаю, что это не кеширование, но факт остается фактом, linq не обновляет данные (видимо где-то кешируются объекты трекинга) пока не пересоздать контекст, может я что-то не так делаю.

И правильно. С чего бы это вдруг ему обновлять данные? Вы предсьавляете себе нагрузку, если бы при каждом пуке конткест обновлял данные с сервера? :)
Поэтому, правилами хорошего тона предписано: на каждый чих нужно пересоздавать контекст. Уже обсуждали перфоманс контекста, поищите на форуме.
Как вариант, можете руководствоваться паттерном репозиторий, в рамках которого будет единый контекст (которой по IDisposable будет высвобождаться).
Вариантов много, идея одна: убивайте контекст, когда он не нужен. Не держите зазря ресурсы.
24 фев 10, 15:28    [8386409]     Ответить | Цитировать Сообщить модератору
 Re: кэширование объектов в Linq to Sql  [new]
behod
Member

Откуда:
Сообщений: 18
ясно
спасибо
24 фев 10, 16:00    [8386726]     Ответить | Цитировать Сообщить модератору
 Re: кэширование объектов в Linq to Sql  [new]
Ниггадяй
Member

Откуда: Россия, Краснодар
Сообщений: 252
у нас в проекте тож такая хрень была. перед употреблением рефрешиться надо (context.Refresh(item))
26 фев 10, 13:34    [8398048]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить