Extrait de DataRow ou DataReader avec une fonction
Je suis à la recherche d'une solution pour savoir comment être en mesure d'extraire des données à partir d'une base de données lors de l'utilisation d'un DataRow et un DataReader avec une seule fonction (ou une fonction de base).
Mon problème vient du fait que, parfois, j'ai besoin d'un DataReader et parfois j'ai besoin d'un DataTable/DataRow mais ensuite, dans le but d'extraire les données à partir de ces objets, j'ai besoin de séparer les deux méthodes d'accès aux Données car ils ne partagent pas une interface.
Essentiellement lorsque ma base de données de modification de la structure, je ne veux pas avoir à faire et à écrire la suite de récupération de données de code en plusieurs fonctions:
someValue = dr["someValue"]
C'est la même syntaxe et la même chose si je veux une fonction qui partage cette fonction, indépendamment de savoir si je suis à l'aide d'un DataReader ou DataTable/DataRow pour extraire les données à partir de la base de données.
OriginalL'auteur Nate32 | 2011-06-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser CreateDataReader méthode dans la classe DataTable accès à des données par DbDataReader de la classe de base. Par conséquent, vous pouvez changer la mise en œuvre, mais de garder la cartographie.
Il serait mieux si vous pouvez vous déplacer d'un ORM où vous n'avez pas de carte manuellement.
Prendre un coup d'oeil à ce micro ORM Dapper
OriginalL'auteur Eranga
Utilisation cette article pour convertir le datareader pour un datatable et puis vous pouvez l'interface à la fois comme un datatable
Alors vous serait évidemment d'ajouter cette fonction qui est appelée à partir de votre dataLayer:
Et puis dans votre fonction de l'endroit où vous obtenez le datatable, il vous faudra alors faire un si c'est un dataReader, passer le lecteur à la fonction de renvoyer un datatable:
OriginalL'auteur TBohnen.jnr
Voulez-vous dire de carte automatique de requête sql, le résultat de la ligne à une entité? Comme cette?
OriginalL'auteur xling
Créer un adaptateur pour masquer la mise en œuvre de
DataReader
de travailler avecDataTable/DataRow
codesOriginalL'auteur Sung M. Kim
Une solution alternative, j'ai utilisé une fonction privée qui a eu une dynamique argument.
Ensuite ajouté deux fonctions publiques qui ont eu "DataRow" et "DataReader" arguments.
Vous pouvez l'utiliser pour limiter les appels aux types connus ou des interfaces.
Un mot d'avertissement cependant. Vous pouvez avoir besoin de ré-écrire votre charge code légèrement le comportement du dr contenu accessible via la chaîne sur une dynamique légèrement différente. I. e.
ont besoin d'être modifiés à
Mais cette approche évite le double de la charge, le code.
OriginalL'auteur Bucket