Null as value in HttpRuntime.Cache.Add

Я хочу сохранить 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:Значение не может быть нулевым.

Любая идея, возможно ли это, или мне нужно использовать другую структуру данных для хранения нулевых значений и последующего поиска?

5
задан Alex Lockwood 23 March 2012 в 05:17
поделиться