2009-07-01 4 views
-1

Je pense avoir une classe clsConnection dont nous pouvons tirer parti pour exécuter toutes les requêtes SQL comme select, insert, update, delete, .... est plutôt bien.L'application win-based (C#) a besoin d'une classe pour gérer la connexion DB

Mais comment cela pourrait-il être complet? Comment?

+4

BTW, nous ne sont généralement pas mis « cls » devant les noms de classe plus. C'était logique quand les cours étaient spéciaux. Maintenant, ils sont banals. –

Répondre

0

Il me semble que vous réécrivez simplement le SqlConnection ADO.NET (qui a déjà une propriété attachée de type SqlCommand). Ou Linq to SQL (ou, même, Linq to Entities).

1

Vous pouvez utiliser le DAB (SQlHelper) de la bibliothèque d'entreprise. Cela a toutes les méthodes/propriétés nécessaires pour le fonctionnement de la base de données. Vous n'avez pas besoin de créer votre propre code.

Alternativement, vous pouvez utiliser un ORM comme LINQ ou NHibernate.

3

Vous pouvez utiliser LINQ to SQL comme AB Kolan suggéré ou, si vous n'avez pas le temps pour la courbe d'apprentissage, je suggère de jeter un oeil à la Microsoft Enterprise Library Blocs d'application d'accès aux données.

0

Lors de l'accès aux données, j'ai tendance à le diviser en 2 niveaux - uniquement pour la testabilité.

totalement séparé la logique pour obtenir des valeurs clés et de gérer la collecte des données de niveau très bas des inserts atomiques, mises à jour, sélectionne les suppressions, etc.

De cette façon, vous pouvez tester la logique de la collecte de données à faible niveau très facilement sans avoir besoin de lire et d'écrire à partir d'une base de données.

cette façon une couche de classes gère efficacement écrit aux tables individuelles tandis que l'autre est concerné à obtenir les données de recherches etc pour remplir ces tables

La couche logique métier qui se trouve au-dessus de ces 2 couches dal évidemment gère la logique métier réelle - cela signifie que la structure de données est aussi séparée de la logique métier que cela est réaliste possible ... C'est à dire que vous pouvez remplacer le dal et ne pas trop ressentir la douleur.

les 2 itinéraires que vous pouvez prendre ce travail bien sont

ADO.Net

ce qui est très puissant que vous avez le contrôle total, mais en même temps, il prend du temps et se sent repetative. Aussi son ancienne école donc la plupart des gens s'ennuient d'elle donc tous les commentaires linq 2 sql. Avec cela, vous ouvrez une connexion à la base de données et ensuite exécutez une commande contre elle.

Fondamentalement, vous créez une classe pour interfacer avec la base de données et l'utiliser pour utiliser les procédures stockées qui sont dans la base de données. La classe de niveau inférieure déclenche essentiellement la commande avec ses paramètres, puis se remplit elle-même avec les valeurs renvoyées.

et Linq 2 SQL

Ce système est cool. Essentiellement, cela rend la redondance de SP dans 90% des cas en échange de l'autorisation d'instructions sqplesque fortement typées dans votre code - gain de temps et fiabilité. J'utilise toujours 2 calques dal avec ceci mais je profite du fait qu'il générera la classe de base avec les propriétés pour vous et ajoutera simplement la fonctionnalité pour réellement faire les opérations atomiques. Le niveau supérieur implémente ensuite la logique de lecture et d'écriture pour plusieurs objets.

La plus belle partie est que vous pouvez générer des collections de collections facilement avec linq 2 sql et ensuite écrire tous les inserts et mises à jour avec une commande (altohguh en réalité vous avez tendance à faire les choses seperatley). L2S est puissant une fois que vous commencez à jouer avec elle où générer une collection d'objets à partir de ado.net peut être une vraie douleur en comparaison - surtout quand vous devez le faire encore et encore.

Une autre alternative est Linq 2 entités

J'ahve eu des problèmes avec ce dû à des serveurs liés, aussi ne pas comme des vues beaucoup et si vos tables n'avez pas de contraintes ou pk il n'aime pas la vie beaucoup non plus. Id reste à l'écart pendant un moment.

Bien sûr, si vous voulez dire que vous voulez une classe générique pour les données d'écriture et de lecture à partir d'une base de données, je pense que vous ajouterez la complexité plutôt que de résoudre un problème. Vraiment, vous pouvez; t éviter l'écriture de code;) - chaque bit d'accès aux données est unique, en essayant de genericise il passé ado.net ou L2S demande vraiment des ennuis imo.

0

Petit projet: Une classe singleton (comme DatabaseConnection) peut être utile pour ce que vous faites.

Grand projet: Enterprise Library a un code de base de données; NHibernate ou Entities Framework, peut-être.

Votre question n'a pas été assez précis pour donner à cette réponse très définitive.

Questions connexes