public void AddTable(string tableName, RowTransformer rowTransformer = null, string customQuery = null) { tables[tableName] = new Table { Query = customQuery, RowTransformer = rowTransformer }; }
private void InsertIntoCouchDB(string databaseName, string tableName, List <DatabaseRecord> rows, RowTransformer rowTransformer) { const int chunkSize = 1000; using (var client = new MyCouchClient(CouchDbUrl, databaseName)) { Parallel.ForEach(rows.Chunk(chunkSize), new ParallelOptions { MaxDegreeOfParallelism = 20 }, chunkEnumerable => { var chunk = chunkEnumerable.ToArray(); IEnumerable <DatabaseRecord> transformedChunk; if (rowTransformer == null) { transformedChunk = chunk; } else { transformedChunk = chunk.Select(row => rowTransformer(tableName, row)); } var documents = transformedChunk.Select(JsonConvert.SerializeObject).ToArray(); var request = new BulkRequest(); request.Include(documents); client.Documents.BulkAsync(request).Wait(); }); } }