2

現在、ADO に依存する Vb6 プログラムを ADO.NET を使用して C# に書き直しています。元のコードのいくつかの場所で、次のようなものに遭遇しました。

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 は、SqlDataReader が既に [/EDIT] を行っているように RecordSet を動作させるための [EDIT] 方法であることを正しく理解していますか? もしそうなら、私の唯一の本当の質問は、Ado.Net キャッシュを増やす必要があるかどうか、またはそれがデフォルトで処理されるかどうかです。

度重なる質問で大変申し訳ありません。ただし、SOまたはmsdnでこれを見つけることができないようです。

4

2 に答える 2

2

このCacheSizeプロパティは、レコードセットが内部バッファに読み込むレコードの数を制御します。ADO.NETには同じ方法でバッファリングされないため、同等のプロパティはありません。だから、あなたはそれを省くことができます。

adOpenForwardOnlyとadLockReadOnlyがSqlDataReaderのデフォルトであることを正しく理解していますか?

はい。これはデフォルトではなく、データリーダーが機能する唯一の方法です。aを使用する他の方法では、やRecordSetなどの他のクラスを使用します。DataSetSqlDataAdapter

于 2010-10-26T20:11:49.433 に答える
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 に慣れることをお勧めします。LINQ(ADO.NET上に構築され、非常にプログラマーに優しい)で素晴らしい経験を積んだので、時代遅れのVB6機能をADO.NETに置き換えることをお勧めしたくはありません-多くの場所の中でここを読んでください違いが何であるかを見てください。

于 2010-10-26T20:03:22.317 に答える