我的方案是我在缓存中有一个带有几个现有标签的项目。我想使用PutAndUnlock方法更新项目。我是否需要首先检索任何现有标记并将其传递给PutAndUnlock方法以保留它们?
与此相关,添加新标签,我是否必须获取现有标签并在将它们传递给PutAndUnlock方法之前附加任何新标签?
答案 0 :(得分:0)
Microsoft.ApplicationServer.Caching.MultiDirectoryHashtable.PreProcess(AMDHObjectNode oldObjectNode,ref AMDHObjectNode newObjectNode,ref MDHOperationInfo operationInfo)中的开关(operationInfo.OperationType)情况MDHOperationType.PUT_AND_UNLOCK是MDHOperationInfo确定现有项是否为空(或抛出)的位置),或者它是否应该做。 PreProcess被称为 MultiDirectoryHashtable.PutNodeInSlot(ref MDHOperationInfo operationInfo,MDHDirectoryNode dir,int slotIndex)。 从PreProcess返回的是真的,所以它应该最终调用dir.PutNodeInSlot(slotIndex,newObjectNode),这将是我认为的最终答案。
据我所知,它只是对MDHNode插槽进行了简单的分配,而没有对Tags进行任何比较。它使用operationInfo.AssignNewInternalCacheItemVersion()分配一个新版本,但我无法看到它对标签做了什么。
如果您查看Microsoft.ApplicationServer.Caching.MDHOperationInfo上的NewCacheItem属性的用法,它们似乎没有触及标记。