可以将null插入Cache吗?

时间:2012-04-30 03:32:37

标签: c# asp.net caching design-patterns null-object-pattern

我在ASP.NET网站中主动使用缓存。

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

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

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

感谢。欢迎任何想法。

P.S。事实上,当我尝试调用时,我甚至无法将null对象放入Cache:

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

我收到:

  

值不能为空。

P.P.S。为什么MSDN对此行为一无所知?

2 个答案:

答案 0 :(得分:5)

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

HttpContext.Current.Cache.Insert("name...", DBNull.Value);

答案 1 :(得分:1)

不,你不能在缓存中放一个null,那会是什么意思?如果折扣是一个数值,那么缺少折扣(表中为空)确实表示折扣为0% - 那么为什么不存储0?