C# NET中的Ado记录集MoveNext()非常慢?

C# NET中的Ado记录集MoveNext()非常慢?,c#,performance,ado,recordset,C#,Performance,Ado,Recordset,为什么当我在.NET应用程序中从VB应用程序接收ADO记录集(大约有70.000条记录)时,第一个示例只需要6秒,而第二个示例需要150秒以上 第一: 第二: 有没有办法让记录移动更快?我怀疑GetRecords会在迭代与打开的游标交互时立即拉取整个结果集,从而导致更多的网络吞吐量。但是,当记录集返回时,没有与数据库的连接。你能在源应用程序中使用ADO.NET吗,或者它是VB6或更早版本的应用程序?你能用ADO.NET直接在C#中连接到数据源吗?不幸的是不能。我必须使用COM+服务器返回SQL查

为什么当我在.NET应用程序中从VB应用程序接收ADO记录集(大约有70.000条记录)时,第一个示例只需要6秒,而第二个示例需要150秒以上

第一:

第二:


有没有办法让记录移动更快?

我怀疑GetRecords会在迭代与打开的游标交互时立即拉取整个结果集,从而导致更多的网络吞吐量。但是,当记录集返回时,没有与数据库的连接。你能在源应用程序中使用ADO.NET吗,或者它是VB6或更早版本的应用程序?你能用ADO.NET直接在C#中连接到数据源吗?不幸的是不能。我必须使用COM+服务器返回SQL查询的ADO记录集结果……如果两个调用中都没有网络参与,可能是实际的COM互操作,尽管它看起来很高。您应该在探查器下运行代码,以查看循环的燃烧位置。
dynamic recordset = myVBObject.GetRecordset();
recordset.GetRecords();
dynamic recordset = myVBObject.GetRecordset();
while (resultComObject.AbsolutePosition != ADODB.PositionEnum.adPosBOF && resultComObject.AbsolutePosition != ADODB.PositionEnum.adPosEOF)
{
    resultComObject.MoveNext();
}