Esempio n. 1
0
 public void AddTable(string tableName, RowTransformer rowTransformer = null, string customQuery = null)
 {
     tables[tableName] = new Table
     {
         Query          = customQuery,
         RowTransformer = rowTransformer
     };
 }
Esempio n. 2
0
        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();
                });
            }
        }