protected override Task <CrudResult <bool> > PersistDeleteEntityAsync(Core.Models.Tag entity) { return(mongoDatabase.GetCollection <Core.Models.Tag>(this.tableName).DeleteOneAsync(user => user.Id == entity.Id).ContinueWith(resultTask => { if (!resultTask.IsFaulted) { return CrudResult <bool> .Success(true); } throw resultTask.Exception; })); }
protected override Task <CrudResult <string> > PersistAddEntityAsync(Core.Models.Tag entity) { TaskCompletionSource <CrudResult <string> > tcs = new TaskCompletionSource <CrudResult <string> >(); mongoDatabase.GetCollection <Core.Models.Tag>(this.tableName).InsertOneAsync(entity).ContinueWith(resultTask => { if (resultTask.IsFaulted) { MongoCommandException mongoException = resultTask.Exception?.InnerException as MongoCommandException; if (mongoException != null && mongoException.CodeName == "OperationNotSupportedInTransaction") { try { mongoDatabase.CreateCollection(tableName); List <CreateIndexModel <Core.Models.Tag> > indexModelList = new List <CreateIndexModel <Core.Models.Tag> >(); ////adding userId as Index var userIdIndexKey = Builders <Core.Models.Tag> .IndexKeys.Ascending(new StringFieldDefinition <Core.Models.Tag>($"{nameof(Core.Models.Tag.UserId)}")); var userIdIndexModel = new CreateIndexModel <Core.Models.Tag>(userIdIndexKey); indexModelList.Add(userIdIndexModel); ////adding name as Index var nameIndexKey = Builders <Core.Models.Tag> .IndexKeys.Ascending(new StringFieldDefinition <Core.Models.Tag>($"{nameof(Core.Models.Tag.Name)}")); var nameIndexModel = new CreateIndexModel <Core.Models.Tag>(nameIndexKey); indexModelList.Add(nameIndexModel); //adding all the indexes. mongoDatabase.GetCollection <Core.Models.Tag>(this.tableName).Indexes.CreateMany(indexModelList); } catch (Exception ex) { tcs.SetException(ex); } } tcs.SetException(resultTask.Exception); } else { tcs.SetResult(CrudResult <String> .Success(entity.Id)); } }); return(tcs.Task); }