2009-07-19 2 views
1

J'essaie d'écrire un itérateur de données pour SQL, il semble que la meilleure approche consiste à créer un SQL dynamique pour ce problème. Je souhaite que l'itérateur prenne en charge le paging, le tri et le filtrage des données, et idéalement ne pas itérer sur une copie de mémoire, mais ne sélectionne même pas les données en premier lieu, peut-être que LINQ to SQL ou Entity Framework similaire? La chose amusante est que j'ai déjà écrit un bon itérateur de données pour SQLCE de toutes les bases de données qu'il supporte un SqlCeResultSet, et un concept ExecuteResultSet rendant cela très facile mais cela n'a pas encore été fait pour le produit de base de données serveur complet. Je peux m'imaginer pourquoi il s'agit essentiellement d'une base de données intégrée que vous pouvez verrouiller en mode mono-utilisateur, et la prise en charge de la langue est également réduite, ce qui facilite la tâche. Peut-être que je suis trop fatigué ou pas assez instruit pour comprendre une façon acceptable de le faire. Je pense que faire un SQL Data Reader peut être le ticket mais si je ne me trompe pas, vous devez garder la connexion ouverte pendant que vous itérez ce qui ne semble pas très logique, l'autre approche consiste simplement à sélectionner la page de données à retourner et offrir un itérateur sur cette collection, quand vous arrivez à la fin, il descend la page suivante, cela fonctionnerait mais signifie que je dois cuisiner beaucoup de constructions SQL pour soutenir le tri, le filtrage et la pagination, mais à la fin, ce peut être le Solution.Ecriture d'un itérateur de données réutilisable pour SQL Server 2005/2008

Merci

+0

Vous devriez donner le contexte. Cela compte. ASP.NET ou WinForms, wtc. Ce n'est vraiment pas clair ce que vous voulez que votre itérateur supporte. –

+0

Qu'est-ce que le contexte importe, tant que l'on veut juste retourner un sous-ensemble des données de la couche de données, si c'était winforms ou asp.net qui est juste le moyen d'afficher les données. Pour clarifier je veux juste un itérateur qui fonctionne à la couche sql, donc je génère mon propre t-sql ou utilise un outil pour le générer automatiquement, et ce sql doit supporter la pagination, le filtrage et le tri des données. La prise en charge de la communication asynchrone et ne nécessitant pas non plus de garder une connexion active tout en paginant à travers ces données est logique. – Enigmae

+0

La pagination, le tri et le filtrage sont tous des éléments initiés par une interface utilisateur - la nature de la technologie de l'interface utilisateur est importante ici. –

Répondre

0

Je suis d'accord avec Shiraz - LINQ pour effectuer la pagination côté serveur est le chemin à parcourir. Vous pouvez utiliser exactement la même logique pour rechercher une collection d'objets (qui implémente IEnumerable) comme vous le pouvez pour effectuer la pagination côté serveur dans SQL.

Vous trouverez des exemples sur StackOverflow here.

Questions connexes