Esempio n. 1
0
        private void WriteToDestination(List <Fact> facts, SqlBulkCopy sqlBulkCopy, StreamWriter outputFile)
        {
            ReportStatus("Writing data...");
            if (outputFile != null)
            {
                StringBuilder sb          = new StringBuilder();
                var           factsReader = EntityDataReaderExtensions.AsDataReader <Fact>(facts);
                while (factsReader.Read())
                {
                    for (int i = 0; i < factsReader.FieldCount; i++)
                    {
                        if (i > 0)
                        {
                            sb.Append('\t');
                        }
                        sb.Append(factsReader[i].ToString());
                    }
                    sb.Append(Environment.NewLine);
                }
                outputFile.Write(sb);
            }

            if (sqlBulkCopy != null)
            {
                sqlBulkCopy.WriteToServer(EntityDataReaderExtensions.AsDataReader <Fact>(facts));
            }
        }
Esempio n. 2
0
        private void BulkLoadEntities(EntityPump pump, string connectionString, dynamic entities)
        {
            Console.WriteLine($"[{DateTime.Now:o}] Preparing rows for commit ...");
            Stopwatch sw = Stopwatch.StartNew();

            using (var transactionScope = new TransactionScope(
                       TransactionScopeOption.Required,
                       new TransactionOptions {
                IsolationLevel = IsolationLevel.ReadCommitted
            }))
            {
                using (var sqlBulkCopy = new SqlBulkCopy(connectionString))
                {
                    sqlBulkCopy.DestinationTableName = pump.TableName;
                    sqlBulkCopy.BatchSize            = 10000;
                    sqlBulkCopy.WriteToServer(EntityDataReaderExtensions.AsDataReader(entities));

                    transactionScope.Complete();
                }
            }

            sw.Stop();
            Console.WriteLine($"[{DateTime.Now:o}]  -> committed {entities.Count:N0} rows in {sw.Elapsed}.");
        }