Commit ed90d66e authored by mgravell's avatar mgravell

add missing APIs to BulkCopy

parent b6639146
...@@ -30,6 +30,20 @@ public abstract class BulkCopy : IDisposable ...@@ -30,6 +30,20 @@ public abstract class BulkCopy : IDisposable
return DynamicBulkCopy.Create(obj); 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> /// <summary>
/// Provide an external registration for a given connection type /// Provide an external registration for a given connection type
/// </summary> /// </summary>
...@@ -74,15 +88,23 @@ public static void Register(Type type, Func<DbConnection, object>? factory) ...@@ -74,15 +88,23 @@ public static void Register(Type type, Func<DbConnection, object>? factory)
/// <summary> /// <summary>
/// Write a set of data to the server /// Write a set of data to the server
/// </summary> /// </summary>
public abstract void WriteToServer(DataRow[] source);
/// <summary>
/// Write a set of data to the server
/// </summary>
public abstract void WriteToServer(IDataReader source); public abstract void WriteToServer(IDataReader source);
/// <summary> /// <summary>
/// Write a set of data to the server /// Write a set of data to the server
/// </summary> /// </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> /// <summary>
/// Write a set of data to the server /// Write a set of data to the server
/// </summary> /// </summary>
public abstract Task WriteToServerAsync(DataTable source, CancellationToken cancellationToken); public abstract Task WriteToServerAsync(DataRow[] source, CancellationToken cancellationToken = default);
/// <summary> /// <summary>
/// Add a mapping between two columns by name /// Add a mapping between two columns by name
/// </summary> /// </summary>
......
...@@ -32,6 +32,8 @@ public override void AddColumnMapping(int sourceColumn, int destinationColumn) ...@@ -32,6 +32,8 @@ public override void AddColumnMapping(int sourceColumn, int destinationColumn)
public override void WriteToServer(DataTable source) public override void WriteToServer(DataTable source)
=> _wrapped.WriteToServer(source); => _wrapped.WriteToServer(source);
public override void WriteToServer(DataRow[] source)
=> _wrapped.WriteToServer(source);
public override void WriteToServer(IDataReader source) public override void WriteToServer(IDataReader source)
=> _wrapped.WriteToServer(source); => _wrapped.WriteToServer(source);
...@@ -41,6 +43,8 @@ public override Task WriteToServerAsync(DbDataReader source, CancellationToken c ...@@ -41,6 +43,8 @@ public override Task WriteToServerAsync(DbDataReader source, CancellationToken c
public override Task WriteToServerAsync(DataTable source, CancellationToken cancellationToken) public override Task WriteToServerAsync(DataTable source, CancellationToken cancellationToken)
=> _wrapped.WriteToServer(source, cancellationToken); => _wrapped.WriteToServer(source, cancellationToken);
public override Task WriteToServerAsync(DataRow[] source, CancellationToken cancellationToken)
=> _wrapped.WriteToServer(source, cancellationToken);
protected override void Dispose(bool disposing) 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