【发布时间】:2012-01-15 04:06:09
【问题描述】:
我对@987654321@ 的回答不满意。
我对第 3 方解决方案不感兴趣,因为这应该是我自己解决的简单问题。
我正在寻找Caching of Linq queries 的替代解决方案,它适用于任何 SQL 查询,而不仅仅是 Linq。理想的解决方案是拥有像 execsql @Sql,@HashCode 这样的存储过程,它会通过 HashCode 查询序列化结果表,如果存在则返回结果,否则运行查询,将序列化结果保存在结果表中并返回。当然,返回的结果必须具有与未存储时相同的结构。
在这种情况下,我们不必担心缓存过期/垃圾清理或其他可能的性能问题。
为了做到这一点,我需要能够检测 SQL 查询的哈希码(我想 SQL 查询字符串上的 GetHashCode 就可以了),序列化和反序列化查询结果。
考虑到查询结果可能具有不同的结构,我认为使用FOR XML AUTO 将是序列化的一个很好的候选者。但是如何以通用的方式对其进行反序列化,以使代码不依赖于结果结构?
如果需要,该解决方案可以使用 Sql 2008 功能。
【问题讨论】:
-
Caching ... should be a sinple problem to solve...:我希望这是真的。不是。是最难解决的问题之一。
标签: sql sql-server caching serialization