2010-10-26 2 views
2

Я сейчас переписываю программу Vb6, опираясь на ADO на C# w/ADO.NET. Я бежал в нескольких местах в исходном коде с вещами, как это:Ado.Net RecordSet член эквивалент?

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

Есть ли эквивалент (или даже потребность в эквиваленте) в ADO.RecordSet.CacheSize в Ado.Net? (Капитализация по этим?) Я рад принять, что «ADO.NET» позаботится об этом для вас (очень рад принять, что на самом деле). Моя проблема в том, что у меня не было опыта ADO перед этой миграцией, поэтому я не уверен, есть ли тонкости, которых я бы пропустил.

Правильно ли я понимаю, что adOpenForwardOnly и adLockReadOnly являются [EDIT], чтобы заставить RecordSet вести себя как SqlDataReader уже [/ EDIT]? Если это так, то мой единственный реальный вопрос заключается в том, нужно ли мне больше делать кеш Ado.Net или обрабатывать по умолчанию.

Мне очень жаль, если это повторяющийся вопрос. Кажется, я не могу найти это на S.O. или msdn.

ответ

2

Свойство CacheSize определяет количество записей, записываемых в внутренний буфер. В ADO.NET нет эквивалентного свойства, поскольку он не буферизируется таким же образом. Таким образом, вы можете просто оставить это.

Правильно ли я понимаю, что adOpenForwardOnly и adLockReadOnly являются по умолчанию для SqlDataReader?

Да. Ну, это не по умолчанию, а, скорее, единственный способ, которым работает читатель данных. Для любого другого способа использования RecordSet вы использовали бы другие классы, такие как DataSet и SqlDataAdapter.

+0

Еще лучше. Спасибо, ваше объяснение больше отвечает на мои вопросы, более прямо. – Crisfole

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

Моя рекомендация, однако, было бы ознакомиться с Linq- to-SQL, который был представлен в .NET 3.5. Я бы предпочел не рекомендовать вам заменить устаревшую функциональность VB6 на ADO.NET, когда у меня был большой опыт работы с LINQ (который построен на ADO.NET и очень удобен для программистов) - read here, среди многих мест, чтобы увидеть каковы различия.

+0

Спасибо, это полезно. Похоже, я могу в значительной степени притвориться, что кода там нет, и сделать его более эффективным в более .Net-ey способами. – Crisfole

+0

Спасибо за совет. Я использовал (и любил) некоторый Linq-to-Sql, но, к сожалению, он не подходит для моего конкретного случая. Я использую запросы, которые выбирают из произвольных таблиц в зависимости от содержимого другой базы данных (с более стабильной схемой). Я мог бы использовать половину Linq-to-Sql/ADO.Net, но было бы лучше быть последовательным. – Crisfole