Написание многоразового итератора данных для SQL Server 2005/2008 - PullRequest
1 голос
/ 19 июля 2009

Я пытаюсь написать итератор данных для SQL, похоже, что лучший подход - это подготовить динамический sql для этой проблемы.

Я хочу, чтобы итератор поддерживал разбиение на страницы, сортировку и фильтрацию данных и в идеале не выполнял бы итерации по копии памяти, но даже не выбирал данные в первую очередь, возможно, LINQ to SQL или Entity Framework могли бы обеспечить нечто подобное

Самое смешное, что я уже написал хороший итератор данных для SQLCE для всех баз данных, он поддерживает SqlCeResultSet и концепцию ExecuteResultSet, которая делает это очень простым, но это еще не сделано для полнофункционального серверного продукта баз данных. Я могу себе представить, почему это в основном как встроенная БД, вы можете заблокировать ее для однопользовательского режима, а также уменьшена языковая поддержка, что делает его более легким.

Возможно, я просто слишком устал или недостаточно образован, чтобы понять приемлемый способ сделать это. Я думаю, что использование SQL Data Reader может быть идеальным решением, но если я не ошибаюсь, вам нужно держать соединение открытым, пока вы выполняете итерацию, что, по-видимому, не имеет особого смысла, другой подход состоит в том, чтобы просто выбрать страницу данных, чтобы вернуть ее и предложить итератор для этой коллекции, когда вы дойдете до конца, она свернет следующую страницу, это сработает, но означает, что мне нужно подготовить множество конструкций SQL для поддержки сортировки, фильтрации и разбиения на страницы, но в конце концов это может быть решение.

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 июля 2009

Я согласен с Ширазом - использование LINQ для пейджинга на стороне сервера - это путь. Вы можете использовать точно такую ​​же логику для разбиения на страницы коллекции объектов (которые реализуют IEnumerable), как вы можете выполнять разбиение на страницы на стороне сервера в SQL.

Примеры StackOverflow можно найти здесь .

0 голосов
/ 20 июля 2009

Вот ссылка, показывающая, как сделать пейджинг с Entity Framework:

http://msdn.microsoft.com/en-us/library/bb738702.aspx

...