Commit ed90d66e authored by mgravell's avatar mgravell

add missing APIs to BulkCopy

parent b6639146
......@@ -30,6 +30,20 @@ public abstract class BulkCopy : IDisposable
return DynamicBulkCopy.Create(obj);
}
/// <summary>
/// Create a BulkCopy instance for the connection provided
/// </summary>
public static BulkCopy Create(DbConnection connection)
{
var bcp = TryCreate(connection);
if (bcp == null)
{
if (connection == null) throw new ArgumentNullException(nameof(connection));
throw new NotSupportedException("Unable to create BulkCopy for " + connection.GetType().FullName);
}
return bcp;
}
/// <summary>
/// Provide an external registration for a given connection type
/// </summary>
......@@ -74,15 +88,23 @@ public static void Register(Type type, Func<DbConnection, object>? factory)
/// <summary>
/// Write a set of data to the server
/// </summary>
public abstract void WriteToServer(DataRow[] source);
/// <summary>
/// Write a set of data to the server
/// </summary>
public abstract void WriteToServer(IDataReader source);
/// <summary>
/// Write a set of data to the server
/// </summary>
public abstract Task WriteToServerAsync(DbDataReader source, CancellationToken cancellationToken);
public abstract Task WriteToServerAsync(DbDataReader source, CancellationToken cancellationToken = default);
/// <summary>
/// Write a set of data to the server
/// </summary>
public abstract Task WriteToServerAsync(DataTable source, CancellationToken cancellationToken = default);
/// <summary>
/// Write a set of data to the server
/// </summary>
public abstract Task WriteToServerAsync(DataTable source, CancellationToken cancellationToken);
public abstract Task WriteToServerAsync(DataRow[] source, CancellationToken cancellationToken = default);
/// <summary>
/// Add a mapping between two columns by name
/// </summary>
......
......@@ -32,6 +32,8 @@ public override void AddColumnMapping(int sourceColumn, int destinationColumn)
public override void WriteToServer(DataTable source)
=> _wrapped.WriteToServer(source);
public override void WriteToServer(DataRow[] source)
=> _wrapped.WriteToServer(source);
public override void WriteToServer(IDataReader source)
=> _wrapped.WriteToServer(source);
......@@ -41,6 +43,8 @@ public override Task WriteToServerAsync(DbDataReader source, CancellationToken c
public override Task WriteToServerAsync(DataTable source, CancellationToken cancellationToken)
=> _wrapped.WriteToServer(source, cancellationToken);
public override Task WriteToServerAsync(DataRow[] source, CancellationToken cancellationToken)
=> _wrapped.WriteToServer(source, cancellationToken);
protected override void Dispose(bool disposing)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment