Вопрос

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

Я видел на вводной странице служб данных ADO.NET (здесь), что у них пока нет поддержки API для управления длительностью кэша или чего-то подобного.

У кого-нибудь есть идеи, как это сделать или отключить кеш?

Это было полезно?

Решение

По умолчанию для контекста данных MergeOption установлено значение AppendOnly.Это означает, что повторные запросы будут добавлять только новые сущности и не будут обновлять существующие.Попробуйте установить для MergeOption значение OverwriteChanges:

this.context.MergeOption = MergeOption.OverwriteChanges;

Это сработало для меня, когда я заметил это!Если вы используете данные в реальном времени, возможно, вы захотите полностью отключить отслеживание изменений с помощью опции NoTracking.

Другие советы

Недавно мы опубликовали сообщение о том, как использовать ETags для управления политикой кэширования данных, возвращаемых из службы данных. http://blogs.msdn.com/astoriateam/archive/2008/04/22/optimistic-concurrency-data-services.aspx

Эта ссылка полезна, но на самом деле она не говорит об ETags и кэшировании, а просто упоминает, что ETags могут быть использовал для кэширования.У вас есть пример?

Подробная информация о ETag

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top