private Slice GetIndexKeyPrefixSlice(SecondaryIndexAttribute indexAttr) { using (var ms = new MemoryStream()) using (var writer = new BinaryWriter(ms)) { writer.Write(ClassNameHash); writer.Write(IndexPrefix); writer.Write(this.HashedIndexName(indexAttr.Name)); writer.Flush(); return(Slice.FromByteArray(ms.ToArray())); } }
private Slice GetIndexKeySlice(T obj, MemberInfo member, SecondaryIndexAttribute indexAttr, Slice primaryId) { using (var ms = new MemoryStream()) using (var writer = new BinaryWriter(ms)) { var serializer = indexAttr.Serializer; var serializedBytes = serializer.Serialize(this.GetValue(obj, member)); this.VerifySerializedBytes(serializedBytes); writer.Write(this.GetIndexKeyPrefixSlice(indexAttr).ToByteArray(deepCopy: false)); writer.Write(serializedBytes); writer.Write(primaryId.ToByteArray(deepCopy: false)); writer.Flush(); return(Slice.FromByteArray(ms.ToArray())); } }