private void RemapEntitySetReference(RemapContext context, ReferenceFieldChangeInfo info) { var fieldAssociation = info.Field.GetAssociation(info.FieldValue.TypeInfo); if (!fieldAssociation.IsMaster && fieldAssociation.IsPaired) { return; } var oldCombinedKey = info.AuxiliaryEntity; var fieldOwnerKey = context.TryRemapKey(info.FieldOwner); var fieldValueKey = context.TryRemapKey(info.FieldValue); var transformer = new CombineTransform(false, fieldOwnerKey.Value.Descriptor, fieldValueKey.Value.Descriptor); var combinedTuple = transformer.Apply(TupleTransformType.Tuple, fieldOwnerKey.Value, fieldValueKey.Value); var newCombinedKey = Key.Create(Session.Domain, Session.StorageNodeId, fieldAssociation.AuxiliaryType, TypeReferenceAccuracy.ExactType, combinedTuple); context.RegisterKeyMap(oldCombinedKey, newCombinedKey); }
private void RemapEntityReference(RemapContext context, ReferenceFieldChangeInfo info) { var entity = Session.Query.SingleOrDefault(info.FieldOwner); if (entity == null) { return; } var referencedEntity = (Entity)entity.GetFieldValue(info.Field); if (referencedEntity == null) { return; } var referencedKey = referencedEntity.Key; var realKey = context.TryRemapKey(referencedKey); entity.SetReferenceKey(info.Field, realKey); }