Я только начал погружаться в службы данных ADO.NET для проекта и быстро столкнулся с проблемой. Поначалу меня поразила производительность, но потом я понял, что данные кешируются. Мой проект полагается на данные в реальном времени, и я хотел бы использовать синтаксис запросов REST ADO.NET Data Services (без необходимости использовать WCF или SOAP), но без кеширования.
На вводной странице служб данных ADO.NET (здесь) я видел, что у них еще нет поддержки API для управления продолжительностью кеширования или чего-либо подобного.
У кого-нибудь есть идеи, как это сделать или отключить кеш?





Недавно мы сделали сообщение о том, как использовать ETags для управления политикой кэширования данных, возвращаемых из службы данных, http://blogs.msdn.com/astoriateam/archive/2008/04/22/optimistic-concurrency-data-services.aspx.
Эта ссылка полезна, но на самом деле она не говорит об ETags и кешировании, в ней просто упоминается, что ETags могут быть использовал для кеширования. У вас есть пример?
Подробные сведения о ETag
По умолчанию для контекста данных MergeOption установлено значение AppendOnly. Это означает, что при повторных запросах будут добавлены только новые сущности, а не существующие. Попробуйте установить для MergeOption значение OverwriteChanges:
this.context.MergeOption = MergeOption.OverwriteChanges;
У меня это сработало, когда я это заметил! Если вы используете данные в реальном времени, вы можете полностью отключить отслеживание изменений с помощью опции NoTracking.
Хммм, я буду ждать ответа по этому поводу, потому что я не знал, что фактические данные были кэшированы. Вы абсолютно уверены, что кэшируются данные, а не запросы, которые обрабатываются LINQ для каждого URI на основе REST, который вы используете для доступа к своим данным?