示例#1
0
        public async Task <string> CreateNew <T>(T data) where T : IDbEntity, new()
        {
            var id       = StorageIdentityGenerator.GenerateId();
            var entities = CreateInternal(data, id);
            await StorageService.BulkInsertOrReplaceWithSamePartitionKey(typeof(T).Name, entities.ToArray()).ConfigureAwait(false);

            return(id);
        }
示例#2
0
        public Task <string> CreateNew <T>(T data) where T : IDbEntity, new()
        {
            SetUpData <T>();
            var id = StorageIdentityGenerator.GenerateId();

            data.Id = id;
            database[typeof(T)].GetOrAdd(id, RemoveRef(data));
            return(Task.FromResult(id));
        }
示例#3
0
        public Task <bool> Update <T>(T data) where T : IDbEntity, new()
        {
            SetUpData <T>();
            var existingData = database[typeof(T)][data.Id];

            if (existingData.Etag != data.Etag)
            {
                throw new AccessViolationException($"Etag mis-match between {existingData.Etag}  and {data.Etag}");
            }
            data.Etag = StorageIdentityGenerator.GenerateId();
            database[typeof(T)][data.Id] = RemoveRef(data);
            return(Task.FromResult(true));
        }