예제 #1
0
        public BlittableJsonReaderObject ConvertEntityToBlittable(object entity, DocumentInfo documentInfo)
        {
            //maybe we don't need to do anything..
            if (entity is BlittableJsonReaderObject blittable)
            {
                return(blittable);
            }

            if (documentInfo != null)
            {
                _session.OnBeforeConversionToDocumentInvoke(documentInfo.Id, entity);
            }

            using (DefaultRavenContractResolver.RegisterExtensionDataGetter(FillMissingProperties))
                using (var writer = new BlittableJsonWriter(_session.Context, documentInfo))
                {
                    var document = ConvertEntityToBlittableInternal(entity, _session.Conventions, _session.Context, _session.JsonSerializer, writer);

                    if (documentInfo != null)
                    {
                        _session.OnAfterConversionToDocumentInvoke(documentInfo.Id, entity, ref document);
                    }

                    return(document);
                }
        }
예제 #2
0
        public BlittableJsonReaderObject ConvertEntityToBlittable(object entity, DocumentInfo documentInfo)
        {
            //maybe we don't need to do anything..
            if (entity is BlittableJsonReaderObject blittable)
            {
                return(blittable);
            }

            using (DefaultRavenContractResolver.RegisterExtensionDataGetter(FillMissingProperties))
                using (var writer = new BlittableJsonWriter(_session.Context, documentInfo))
                {
                    var serializer = _session.Conventions.CreateSerializer();

                    serializer.Serialize(writer, entity);
                    writer.FinalizeDocument();
                    var reader = writer.CreateReader();
                    var type   = entity.GetType();

                    var changes = TryRemoveIdentityProperty(reader, type, _session.Conventions);
                    changes |= TrySimplifyJson(reader);

                    if (changes)
                    {
                        reader = _session.Context.ReadObject(reader, "convert/entityToBlittable");
                    }

                    return(reader);
                }
        }
예제 #3
0
        public BlittableJsonReaderObject ConvertEntityToBlittable(object entity, DocumentInfo documentInfo)
        {
            //maybe we don't need to do anything..
            if (entity is BlittableJsonReaderObject blittable)
            {
                return(blittable);
            }

            using (DefaultRavenContractResolver.RegisterExtensionDataGetter(FillMissingProperties))
                using (var writer = new BlittableJsonWriter(_session.Context, documentInfo))
                {
                    return(ConvertEntityToBlittableInternal(entity, _session.Conventions, _session.Context, _session.JsonSerializer, writer));
                }
        }