Ado.Net RecordSet成员相当于?

时间:2010-10-26 19:55:59

标签: c# ado.net ado recordset vb6-migration

我目前正在将依赖于ADO的Vb6程序重新编写到C#w / ADO.NET中。我在原始代码中遇到了几个地方,有这样的东西:

Dim rs As New Recordset
rs.CacheSize = 500
Call rs.Open(sSql, cnMeta, adOpenForwardOnly, adLockReadOnly)

Ado.Net中是否存在与ADO.RecordSet.CacheSize等效(甚至需要等效的)? (关于那些的资本化?)我很高兴接受“ADO.NET”为你处理(非常很高兴接受这一点,实际上)。我的问题是,在迁移之前我没有ADO经验,所以我不确定是否会遗漏一些细微之处。

我是否正确理解adOpenForwardOnly和adLockReadOnly是[编辑]方式使RecordSet的行为类似于SqlDataReader已经[/ EDIT]?如果是这样,那么我唯一真正的问题是我是否需要更多地使用Ado.Net缓存,或者是否默认处理它。

如果这是一个重复的问题,我真的很抱歉。我似乎无法在S.O.上找到这个。或msdn虽然。

2 个答案:

答案 0 :(得分:2)

CacheSize属性控制记录集读入其内部缓冲区的记录数。 ADO.NET中没有等效属性,因为它没有以相同的方式缓冲。所以,你可以把它留下来。

  

我是否理解正确   adOpenForwardOnly和adLockReadOnly   是SqlDataReader的默认值?

是。嗯,这不是默认设置,而是数据阅读器工作的唯一方式。对于使用RecordSet的任何其他方式,您可以使用其他类,例如DataSetSqlDataAdapter

答案 1 :(得分:1)

这篇文章可能有所帮助:

http://www.devnewsgroups.net/adonet/t55360-paging-recordsets-ado-net.aspx

还指向MSDN CacheSize主题的快速链接:

http://msdn.microsoft.com/en-us/library/ms675871%28VS.85%29.aspx

然而,我的建议是熟悉在.NET 3.5中引入的Linq-to-SQL。我宁愿不建议你用ADO.NET替换过时的VB6功能,当我有很好的LINQ体验(基于ADO.NET并且非常适合程序员) - read here,其中很多地方,看看有什么不同。