private void OnBeforeConversionToEntity(object sender, BeforeConversionToEntityEventArgs args) { var document = args.Document; if (document.Modifications == null) { document.Modifications = new DynamicJsonValue(); } document.Modifications["Before"] = true; args.Document = args.Session.Context.ReadObject(document, args.Id); }
static void OnBeforeConversionToEntity(object sender, BeforeConversionToEntityEventArgs args) { if (args.Type != typeof(SagaDataContainer)) { return; } if (!args.Document.TryGetMember("Originator", out _)) { // The SagaDataContainer will not have "Originator" but older stored IContainSagaData will return; } if (!args.Document.TryGetMember("@metadata", out var metadataObj) || !(metadataObj is BlittableJsonReaderObject metadata) || !metadata.TryGetMember(Constants.Documents.Metadata.RavenClrType, out var lazyClrType) || !(lazyClrType is LazyStringValue clrType) || clrType.ToString() == ContainerTypeName) { return; } var sagaType = Type.GetType(clrType.ToString()); var original = args.Document; var sagaData = new DynamicJsonValue(sagaType); foreach (var key in original.GetPropertyNames()) { if (key != "@metadata") { sagaData[key] = original[key]; } } var document = new DynamicJsonValue { ["Id"] = args.Id }; if (metadata.TryGetWithoutThrowingOnError("NServiceBus-UniqueDocId", out string identityDocId)) { document["IdentityDocId"] = identityDocId; } sagaData["Id"] = StripSagaIdFromDocumentId(args.Id); document["Data"] = sagaData; args.Document = args.Session.Context.ReadObject(document, args.Id); }