SqlBulkCopy.WriteToServer没有内存中的整个DataTable

时间:2015-09-21 15:09:35

标签: c#

我的代码如下:

IEnumerable<A> data = GetData();
DataTable dataTable = ConvertDataToDataTable(data);
...//initialize SqlBulkCopy
sqlBulkCopy.WriteToServer(dataTable);

但我不希望在DataTable的内存中构建整个数据源。我认为这会更好:

IEnumerable<A> data = GetData();
IDataReader dataReader = ConvertDataToDataReader(data);
...//initialize SqlBulkCopy    
sqlBulkCopy.WriteToServer(dataReader);

假设数据只会在内存中积累到sqlBulkCopy.BatchSize,然后在写入SQL Server后被丢弃(并且它会运行得更快,因为它可以尽快开始写入SQL Server第一批数据可用。)

然而,IDataReader界面非常庞大,我不愿意自己实现它。

还有其他任何解决方案,或者那些可能帮助我像IEnumerable上的ToDataReader()扩展方法的东西吗?

编辑: 好的,这是Get an IDataReader from a typed List的重复问题。看起来必须从头开始实现IDataReader,框架中没有任何内置或定期更新的NuGet包。

0 个答案:

没有答案