コード例 #1
0
        public async Task <DocumentWrap <T> > UpdateAsync(DocumentWrap <T> item)
        {
            //item.SetPropertyValue("Document", item.Document);
            Uri docUri = UriFactory.CreateDocumentUri(database.Id, collection.Id, item.Id);

            var replaceDocument = new Document();
            var serializer      = JsonSerializer.Create(jsonSettings);

            using (var ms = new MemoryStream())
            {
                using (var writer = new StreamWriter(ms, Encoding.UTF8, 4096, true))
                {
                    serializer.Serialize(writer, item);
                }
                ms.Position = 0;
                using (var reader = new StreamReader(ms))
                {
                    var jsonReader = new JsonTextReader(reader);
                    replaceDocument.LoadFrom(jsonReader);
                }
            }
            replaceDocument.SetPropertyValue("_self", docUri.OriginalString);
            var response = await client.ReplaceDocumentAsync(replaceDocument, null);

            return(item);
        }
コード例 #2
0
        public async Task <DocumentWrap <T> > UpsertAsync(DocumentWrap <T> item)
        {
            //item.SetPropertyValue("Document", item.Document);
            Uri docUri = UriFactory.CreateDocumentCollectionUri(database.Id, collection.Id);

            var replaceDocument = new Document();
            var serializer      = JsonSerializer.Create(jsonSettings);

            using (var ms = new MemoryStream())
            {
                using (var writer = new StreamWriter(ms, Encoding.UTF8, 4096, true))
                {
                    serializer.Serialize(writer, item);
                }
                ms.Position = 0;
                using (var reader = new StreamReader(ms))
                {
                    var jsonReader = new JsonTextReader(reader);
                    replaceDocument.LoadFrom(jsonReader);
                }
            }
            //replaceDocument.SetPropertyValue("_self", item.SelfLink);
            var response = await client.UpsertDocumentAsync(docUri, replaceDocument, null, true);

            //return response.Resource.GetPropertyValue<DocumentWrap<T>>("document"); // (DocumentWrap<T>)response.Resource;
            return(item);
        }
コード例 #3
0
        public static async Task <Document> UpdateItemAsync(DocumentWrap <T> item)
        {
            item.SetPropertyValue("Document", item.Document);
            Uri docUri = UriFactory.CreateDocumentUri(DatabaseId, CollectionId, item.Id);

            return(await Client.ReplaceDocumentAsync(docUri, item));
        }
コード例 #4
0
        public Task <DocumentWrap <T> > UpsertAsync(DocumentWrap <T> item)
        {
            var document = Serialize(item);
            var doc      = Collection.AddOrUpdate(item.Id, document, (id, val) => document);

            return(Task.FromResult(Deserialize(doc)));
        }
コード例 #5
0
        //static ConcurrentDictionary<string, T> collection = new ConcurrentDictionary<string, T>();

        public Task <DocumentWrap <T> > AddAsync(DocumentWrap <T> item)
        {
            if (!Collection.TryAdd(item.Id, Serialize(item)))
            {
                throw new InMemoryDocOptimisticConcurrencyException($"Cannot add {typeof(T).Name} with id {item.Id}.");
            }
            return(Task.FromResult(item));
        }
コード例 #6
0
        //public Task<IEnumerable<T>> GetAsync(Expression<Func<T, bool>> unwrappedFilter, Expression<Func<DocumentWrap<T>, bool>> wrappedFilter)
        //{
        //    var wrappedFunc = wrappedFilter.Compile();
        //    var unwrappedFunc = unwrappedFilter.Compile();
        //    var result = collection
        //        .Where(kv => wrappedFunc(new DocumentWrap<T>(kv.Value, kv.Key)))
        //        .Where(kv => unwrappedFunc(kv.Value))
        //        .Select(kv => kv.Value);
        //    return Task.FromResult(result);
        //}

        public Task <DocumentWrap <T> > UpdateAsync(DocumentWrap <T> item)
        {
            var oldValue = Collection[item.Id];

            if (!Collection.TryUpdate(item.Id, Serialize(item), oldValue))
            {
                throw new InMemoryDocOptimisticConcurrencyException($"Cannot update {typeof(T).Name} with id {item.Id}.");
            }
            return(Task.FromResult(item));
        }
コード例 #7
0
        public async Task <DocumentWrap <T> > AddAsync(DocumentWrap <T> item)
        {
            var newDocument = new Document();
            var serializer  = JsonSerializer.Create(jsonSettings);

            using (var ms = new MemoryStream())
            {
                using (var writer = new StreamWriter(ms, Encoding.UTF8, 4096, true))
                {
                    serializer.Serialize(writer, item);
                }
                ms.Position = 0;
                using (var reader = new StreamReader(ms))
                {
                    var jsonReader = new JsonTextReader(reader);
                    newDocument.LoadFrom(jsonReader);
                }
            }
            var response = await client.CreateDocumentAsync(collection.SelfLink, newDocument, null, true);

            return(item);
        }
コード例 #8
0
 public static async Task DeleteItem(DocumentWrap <T> document)
 {
     await DeleteItemByDocumentId(document.Id);
 }
コード例 #9
0
 public static async Task <Document> CreateItemAsync(DocumentWrap <T> item, bool disableAutomaticIdGeneration = true)
 {
     return(await Client.CreateDocumentAsync(Collection.SelfLink, item, null, disableAutomaticIdGeneration));
 }