2

我在我的 ASP.NET 网站中积极使用缓存。

但是,从 db 请求的某些对象确实不存在。例如,我通过查看表中的记录来检查特定Discount产品是否存在。没有记录意味着没有折扣。ProductId=@ProductIdProductsDiscount

您认为将null折扣对象放入缓存中是个好主意吗?

或者我最好发明一些更好的东西(例如使用空对象模式)。事实上,我不太喜欢开始使用空对象模式的想法,因为它需要进行大量的重新设计,我至少现在想避免这种情况。

谢谢。欢迎任何想法。

PS事实上,当我尝试调用时,我什至不能将空对象放入缓存中:

HttpContext.Current.Cache.Insert("name...", null);

我收到:

值不能为空。

PPS 为什么 MSDN 对这种行为只字未提?

4

2 回答 2

5

对于您的情况,您可以将DBNull.Value其用作“无数据”标记:

HttpContext.Current.Cache.Insert("name...", DBNull.Value);
于 2012-04-30T04:20:56.977 回答
1

不,您不能在缓存中放置空值,这有什么意义?如果折扣是一个数值,那么缺少折扣(表中为空)实际上表示折扣为 0% - 那么为什么不存储 0?

于 2012-04-30T03:43:50.047 回答