예제 #1
0
        private void WriteInsertPortion <T>(
            IEnumerable <T> list,
            EntityInfo mapping,
            NpgsqlConnection conn,
            string tempTableName,
            NpgsqlBulkCodeBuilder <T> codeBuilder)
        {
            // 2. Import into temp table
            using (var importer = conn.BeginBinaryImport($"COPY {tempTableName} ({mapping.CopyColumnsForInsertQueryPart}, __index) FROM STDIN (FORMAT BINARY)"))
            {
                var opContext = new OperationContext(context, false);

                var index = 1;
                foreach (var item in list)
                {
                    importer.StartRow();
                    codeBuilder.WriterForInsertAction(item, importer, opContext);
                    importer.Write(index, NpgsqlDbType.Integer);
                    index++;
                }

                // Temp solution!!!
                //importer.Complete();
                CompleteMethodInfo.Invoke(importer, null);
            }
        }