コード例 #1
0
        public void AddLogsToDatabase(int jobId, ICollection <LogItem> completeLog)
        {
            if (completeLog == null || completeLog.Count == 0)
            {
                return;
            }

            using (var table = new DataTable("ExportImportJobLogs"))
            {
                // must create the columns from scratch with each iteration
                table.Columns.AddRange(DatasetColumns.Select(
                                           column => new DataColumn(column.Item1, column.Item2)).ToArray());

                // batch specific amount of record each time
                const int batchSize = 500;
                var       toSkip    = 0;
                while (toSkip < completeLog.Count)
                {
                    foreach (var item in completeLog.Skip(toSkip).Take(batchSize))
                    {
                        var row = table.NewRow();
                        row["JobId"]         = jobId;
                        row["Name"]          = item.Name.TrimToLength(Constants.LogColumnLength);
                        row["Value"]         = item.Value.TrimToLength(Constants.LogColumnLength);
                        row["Level"]         = (int)item.ReportLevel;
                        row["CreatedOnDate"] = item.CreatedOnDate;
                        table.Rows.Add(row);
                    }

                    PlatformDataProvider.Instance().BulkInsert("ExportImportJobLogs_AddBulk", "@DataTable", table);
                    toSkip += batchSize;
                    table.Rows.Clear();
                }
            }
            completeLog.Clear();
        }