批量插入服务
IBatcherProvider
提供数据的批量插入。目前 Fireasy 所适配的数据库都提供了该扩展服务,该服务需要数据库提供机制,实现秒级上万乃至百万数据的插入。注意 Oracle
的批量插入需要使用 OracleAccessProvider
驱动。
该接口同时支持 DataTable
和 List<T>
的批量插入。下面的示例使用的是后者:
public class BatcherData
{
public int ID { get; set; }
public string NAME1 { get; set; }
public string NAME2 { get; set; }
}
[TestMethod]
public void TestBatchInsert()
{
using (var db = DatabaseFactory.CreateDatabase())
{
//获取 IBatcherProvider
var batcher = db.Provider.GetService<IBatcherProvider>();
if (batcher == null)
{
Console.WriteLine("不支持批量插入。");
return;
}
var list = new List<BatcherData>();
//构造100000条数据
for (var i = 0; i < 100000; i++)
{
list.Add(new BatcherData { ID = i, NAME1 = i.ToString(), NAME2 = i.ToString() });
}
batcher.Insert(db, list, "BATCHER");
//输出batcher表的数据量
var sql = new SqlCommand("SELECT COUNT(1) FROM Batcher");
Console.WriteLine("共有{0}条数据", db.ExecuteScalar(sql));
}
}