-
Notifications
You must be signed in to change notification settings - Fork 148
/
Copy pathSqlBulkCopyWrapper.cs
42 lines (36 loc) · 1.2 KB
/
SqlBulkCopyWrapper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;
using System.Data;
using System.Threading.Tasks;
using Microsoft.Data.SqlClient;
namespace Serilog.Sinks.MSSqlServer.Platform.SqlClient
{
internal class SqlBulkCopyWrapper : ISqlBulkCopyWrapper
{
private readonly SqlBulkCopy _sqlBulkCopy;
private bool _disposedValue;
public SqlBulkCopyWrapper(SqlBulkCopy sqlBulkCopy)
{
_sqlBulkCopy = sqlBulkCopy ?? throw new ArgumentNullException(nameof(sqlBulkCopy));
}
public void AddSqlBulkCopyColumnMapping(string sourceColumn, string destinationColumn)
{
var mapping = new SqlBulkCopyColumnMapping(sourceColumn, destinationColumn);
_sqlBulkCopy.ColumnMappings.Add(mapping);
}
public Task WriteToServerAsync(DataTable table) =>
_sqlBulkCopy.WriteToServerAsync(table);
protected virtual void Dispose(bool disposing)
{
if (!_disposedValue)
{
((IDisposable)_sqlBulkCopy).Dispose();
_disposedValue = true;
}
}
public void Dispose()
{
Dispose(disposing: true);
GC.SuppressFinalize(this);
}
}
}