Службы данных ADO.NET «Астория» и кэширование
-
20-08-2019 - |
Вопрос
Я только начал погружаться в службы данных 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