我有一个REST API(内置在Nancy中,在ASP.NET上运行),可以返回这样的JSON对象:
{
id: "1",
name: "Fred",
reviews: [
{
id: "10",
content: "I love Stack Overflow"
}
]
}
请注意,此对象不是直接实体,而是表示。
通常,我会使用DB中实体的最后修改/时间戳作为ETag,然后当它更新时,ETag会更新。简单。
但在这种情况下,如果用户没有改变,但第一次评论的内容发生了变化,该怎么办?使用上述ETag逻辑,它不会改变。我们在这里有一个案例,其中表示包括多个实体,并且我试图找到一种方法来唯一地识别它。
所以我需要以某种方式识别该表示(这是一个简单的C#POCO,存储在Redis缓存中)。
以下是我最初的想法:
Object.GetHashCode()
。不会工作,因为内存参考总是不同的。有没有人能想到一种廉价/有效的方法来做到这一点,理想情况是在全球范围内? (例如Object
或基础对象,而不是每个实体/资源的特定ETag生成逻辑。
非常感谢!