Я использую кэширование объектов в C# для хранения EntityCollection в кэше.
Ниже приведен код для кеширования:
ObjectCache cache = MemoryCache.Default;
const string keyName = "BrandPartners";
EntityCollection result;
if (!cache.Contains(keyName))
{
result = GetCustomerData(service, firstName, lastName, gender);
var cacheItemPolicy = new CacheItemPolicy()
{
AbsoluteExpiration = DateTime.Now.AddMinutes(5)
};
tracingService.Trace("Writing into the cache");
cache.Add(keyName, result, cacheItemPolicy);
}
else
{
result = (EntityCollection)cache.Get(keyName);
tracingService.Trace("Data already found in the cache");
}
Итак, когда я впервые создаю запись в сущности в экземпляре CRM онлайн, я получаю след: «Запись в кэш».
Но когда я снова создаю запись в той же сущности, я снова получаю ту же самую трассировку («Запись в кэш»). Но если я использую кеширование, я не должен получать эту трассировку, потому что keyName «BrandPartners» уже существует в кеше.
Итак, что я делаю не так?
Где выполняется код?
@JamesWood, это индивидуальный рабочий процесс. Следовательно, я выполняю это как этап рабочего процесса.
Между двумя действиями создания время составляет 1 минуту. Я дал таймеру 5 минут только для тестирования.





Вот несколько возможных причин, по которым вы не видите найденное кешированное значение:
У нас есть решение для этого?
@RichaTibrewal, какой случай относится к вам?
Я использую CRM онлайн.
@Richa Tibrewal в некоторых случаях используется кеш памяти, но во многих случаях его не будет. Я не уверен, что есть решение, кроме использования чего-то вроде Redis ...
Сколько времени проходит между двумя действиями по созданию? Поскольку срок действия вашего кеша истекает через 5 минут из-за вашего
CacheItemPolicy.