Avez-vous regardé LINQ-to-SQL (je ne recommande pas ce bien, il ne va pas obtenir beaucoup d'attention de Microsoft à l'avenir), LINQ-to-Entities (c'est ce que Microsoft consacre des ressources dans ce domaine pour le prévisible avenir), NHibernate, ou tout autre ORM(-ish) libraries for .NET? N'importe lequel d'entre eux aura des mécanismes pour vous permettre de créer vos requêtes (d'une manière plus sûre, je pourrais ajouter) et récupérer les résultats sous forme d'objet (ou obtenir des résultats de procédures si vous avez affaire à des résultats scalaires).
Maintenant, il ne vous permet pas de passer la chaîne de requête, mais si vous générez dynamiquement cela, alors le plus souvent, c'est une très mauvaise chose, comme la plupart des instructions SQL dynamiques composées, si vous n'utilisez pas de paramètres (que vous n'êtes pas en train d'indiquer), vous êtes soumis à des attaques SQL injection. Lorsque vous utilisez l'une des bibliothèques ci-dessus, vous pouvez composer votre requête, et les paramètres seront analysés et le SQL dynamique sous les couvertures sera généré en toute sécurité, pas soumis à des attaques par injection SQL.
avez-vous essayé le bloc d'application de données (bibliothèque d'entreprise)? Il a peu d'initialisations et par la suite il fonctionne à peu près comme vous l'avez spécifié. –
http://www.remondo.net/repository-pattern-example-csharp/ – JenonD