Я хочу сохранить null для некоторых ключей в HttpRuntime.Cache
, так как я не хочу снова заходить в базу данных, чтобы обнаружить, что для этого ключа нет записи.
Итак, в первый раз он обращается к базе данных и заполняет кеш. Цель состоит в том, чтобы обслуживать следующие вызовы, используя кэшированные данные, вместо того, чтобы выполнять вызов базы данных.
Вот код, который я использую следующим образом:
Info info = null;
if (HttpRuntime.Cache["Info_" + id.ToString() + "_" + quantity.ToString()] != null)
info = HttpRuntime.Cache["Info_" + id.ToString() + "_" + quantity.ToString()] as Info;
if (info == null)
{
info = (from dd in dc.Infos
where dd.id == id && dd.active == true && dd.quantitytooffset == quantity
select dd).SingleOrDefault();
HttpRuntime.Cache.Add("Info_" + id.ToString() + "_" + quantity.ToString(), info, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, null);
}
Последняя строка кода, т. е. HttpRuntime.Cache.Add, выдает System.ArgumentNullException:Значение не может быть нулевым.
Любая идея, возможно ли это, или мне нужно использовать другую структуру данных для хранения нулевых значений и последующего поиска?