예제 #1
0
        public ViewResult <T> DeserializeList <T>(string json)
        {
            if (string.IsNullOrEmpty(json))
            {
                return(new ViewResult <T>());
            }

            var            type       = typeof(T);
            var            viewType   = typeof(ViewResult <T>);
            ViewResult <T> viewResult = null;

            using (var reader = new StringReader(json))
                viewResult = (ViewResult <T>)DocumentSerializer.Deserialize(reader, viewType);

            using (var reader = new StringReader(json))
                if (!type.IsInstanceOfType(typeof(BaseDocument)))
                {
                    var metadataView =
                        (ViewResult <DocumentMetadata>)
                        MetadataSerialzier.Deserialize(reader, typeof(ViewResult <DocumentMetadata>));

                    for (int i = 0; i < viewResult.Rows.Length; i++)
                    {
                        var metadata = metadataView.Rows[i];
                        var document = viewResult.Rows[i];
                        var key      = KeyAccessor.GetId(document.Model, type);
                        MetadataProvider.SetMetadata(key, metadata.Model);
                    }
                }
            return(viewResult);
        }
예제 #2
0
        public virtual object GetDocumentId(object instance)
        {
            var doc = instance as IHaveDocumentId;

            if (doc != null)
            {
                return(doc.GetDocumentId());
            }
            else
            {
                return(KeyAccessor.GetId(instance, instance.GetType()));
            }
        }
예제 #3
0
        public virtual string GetDocumentRevision(object instance)
        {
            var doc = instance as IHaveDocumentRevision;

            if (doc != null)
            {
                return(doc.DocumentRevision);
            }
            else
            {
                var key      = KeyAccessor.GetId(instance, instance.GetType());
                var metadata = MetadataProvider.GetMetadata(key);
                return(metadata == null ? null : metadata._rev);
            }
        }
예제 #4
0
        public virtual void SetDocumentRevision(string revision, object instance)
        {
            var doc = instance as IHaveDocumentRevision;

            if (doc != null)
            {
                doc.UpdateRevFromJson(revision);
            }
            else
            {
                var key      = KeyAccessor.GetId(instance, instance.GetType());
                var metadata = MetadataProvider.GetMetadata(key) ??
                               new DocumentMetadata()
                {
                    _id = key, _rev = revision
                };
                MetadataProvider.SetMetadata(key, metadata);
            }
        }
예제 #5
0
        public T Deserialize <T>(string json)
        {
            if (string.IsNullOrEmpty(json))
            {
                return(default(T));
            }

            var    type     = typeof(T);
            object document = null;

            using (var reader = new StringReader(json))
                document = DocumentSerializer.Deserialize(reader, type);

            using (var reader = new StringReader(json))
                if (!type.IsInstanceOfType(typeof(BaseDocument)))
                {
                    var key      = KeyAccessor.GetId(document, type);
                    var metadata = (DocumentMetadata)MetadataSerialzier.Deserialize(reader, typeof(DocumentMetadata));
                    MetadataProvider.SetMetadata(key, metadata);
                }
            return((T)document);
        }
예제 #6
0
 public void Store(IMemento <T> actor)
 {
     store[KeyAccessor.GetId(actor.Retrieve())] = actor;
 }
예제 #7
0
 protected void PopulateDefaultEventFields(IEvent baseEvent)
 {
     baseEvent.ActorId      = KeyAccessor.GetId(Actor);
     baseEvent.ActorType    = Actor.GetType().FullName;
     baseEvent.UtcTimeStamp = DateTime.UtcNow;
 }
예제 #8
0
 public bool Persist <T>(T instance) where T : class
 {
     return(Client.Set(KeyAccessor.GetId(instance), instance));
 }
예제 #9
0
 public bool Delete <T>(T instance) where T : class
 {
     return(Client.Remove(KeyAccessor.GetId(instance)));
 }
예제 #10
0
 public bool Persist <T>(T instance) where T : class
 {
     return(Repository.Save(KeyAccessor.GetId(instance), instance));
 }
예제 #11
0
 public bool Delete <T>(T instance) where T : class
 {
     return(Repository.DeleteDocument <T>(KeyAccessor.GetId(instance)));
 }