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); }
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)); }
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)); }