Dapper.NET
バルクインサート
サーチ…
備考
WriteToServer
およびWriteToServerAsync
は、一括コピーのデータのソースとして、IDataReader(例で見られる)、DataTable、およびDataRow配列( DataRow[]
)を受け入れるオーバーロードがあります。
非同期バルクコピー
このサンプルでは、ここで説明するToDataReader
メソッドを使用して、 ToDataReader
の汎用リストDataReaderを作成します。
これは、非同期メソッドを使用して行うこともできます。
public class Widget
{
public int WidgetId {get;set;}
public string Name {get;set;}
public int Quantity {get;set;}
}
public async Task AddWidgets(IEnumerable<Widget> widgets)
{
using(var conn = new SqlConnection("{connection string}")) {
await conn.OpenAsync();
using(var bulkCopy = new SqlBulkCopy(conn)) {
bulkCopy.BulkCopyTimeout = SqlTimeoutSeconds;
bulkCopy.BatchSize = 500;
bulkCopy.DestinationTableName = "Widgets";
bulkCopy.EnableStreaming = true;
using(var dataReader = widgets.ToDataReader())
{
await bulkCopy.WriteToServerAsync(dataReader);
}
}
}
}
一括コピー
このサンプルでは、ここで説明するToDataReader
メソッドを使用して、 ToDataReader
の汎用リストDataReaderを作成します。
これは、非同期メソッドを使用して行うこともできます。
public class Widget
{
public int WidgetId {get;set;}
public string Name {get;set;}
public int Quantity {get;set;}
}
public void AddWidgets(IEnumerable<Widget> widgets)
{
using(var conn = new SqlConnection("{connection string}")) {
conn.Open();
using(var bulkCopy = new SqlBulkCopy(conn)) {
bulkCopy.BulkCopyTimeout = SqlTimeoutSeconds;
bulkCopy.BatchSize = 500;
bulkCopy.DestinationTableName = "Widgets";
bulkCopy.EnableStreaming = true;
using(var dataReader = widgets.ToDataReader())
{
bulkCopy.WriteToServer(dataReader);
}
}
}
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow