我在ASP.NET网站中主动使用缓存。
尽管如此,db请求的某些对象确实不存在。例如,我通过查看Discount
表中ProductId=@ProductId
的记录来检查特定产品是否有ProductsDiscount
。没有记录意味着没有折扣。
您认为将null
折扣对象放入缓存中是个好主意吗?
或者我会更好地发明一些东西(例如使用空对象模式)。事实上,我真的不喜欢开始使用null-object模式的想法,因为它需要进行大量的重新设计,至少我现在要避免。
感谢。欢迎任何想法。
P.S。事实上,当我尝试调用时,我甚至无法将null对象放入Cache:
HttpContext.Current.Cache.Insert("name...", null);
我收到:
值不能为空。
P.P.S。为什么MSDN对此行为一无所知?
答案 0 :(得分:5)
对于您的情况,您可以使用DBNull.Value
作为“无数据”标记:
HttpContext.Current.Cache.Insert("name...", DBNull.Value);
答案 1 :(得分:1)
不,你不能在缓存中放一个null,那会是什么意思?如果折扣是一个数值,那么缺少折扣(表中为空)确实表示折扣为0% - 那么为什么不存储0?