我目前正在将依赖于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虽然。
答案 0 :(得分:2)
CacheSize
属性控制记录集读入其内部缓冲区的记录数。 ADO.NET中没有等效属性,因为它没有以相同的方式缓冲。所以,你可以把它留下来。
我是否理解正确 adOpenForwardOnly和adLockReadOnly 是SqlDataReader的默认值?
是。嗯,这不是默认设置,而是数据阅读器工作的唯一方式。对于使用RecordSet
的任何其他方式,您可以使用其他类,例如DataSet
和SqlDataAdapter
。
答案 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,其中很多地方,看看有什么不同。