コード例 #1
0
        public async Task <Operation> DeleteByIndexAsync <T>(string indexName, Expression <Func <T, bool> > expression)
        {
            var shards = GetCommandsToOperateOn(new ShardRequestData
            {
                EntityType = typeof(T),
                Keys       = { indexName }
            });

            var operations = shardStrategy.ShardAccessStrategy.ApplyAsync(shards, new ShardRequestData
            {
                EntityType = typeof(T),
                Keys       = { indexName }
            }, (dbCmd, i) =>
            {
                var query      = QueryInternal <T>(dbCmd, indexName).Where(expression);
                var indexQuery = new IndexQuery()
                {
                    Query = query.ToString()
                };

                return(dbCmd.DeleteByIndexAsync(indexName, indexQuery));
            });

            var result = await operations.ConfigureAwait(false);

            var shardOperation = new ShardsOperation(result);

            return(shardOperation);
        }
コード例 #2
0
        public Operation DeleteByIndex <T>(string indexName, Expression <Func <T, bool> > expression)
        {
            var query      = Query <T>(indexName).Where(expression);
            var indexQuery = new IndexQuery()
            {
                Query = query.ToString()
            };

            var shards = GetCommandsToOperateOn(new ShardRequestData
            {
                EntityType = typeof(T),
                Keys       = { indexName }
            });
            var operations = shardStrategy.ShardAccessStrategy.Apply(shards, new ShardRequestData
            {
                EntityType = typeof(T),
                Keys       = { indexName }
            }, (dbCmd, i) => dbCmd.DeleteByIndex(indexName, indexQuery));

            var shardOperation = new ShardsOperation(operations);

            return(shardOperation);
        }