2010-06-25 7 views
1

Il s'agit plus d'une question conceptuelle que n'importe quoi. J'ai une classe de base appelée "RawReader".Classes héritées renvoyant des valeurs différentes

Il définit le cadre pour que les classes l'héritent et lisent dans des systèmes de données spécifiques. Par exemple, je souhaite qu'une application soit lue dans un format connu de base de données FoxPro, un fichier CSV ou une base de données SQL (il y a environ 8 autres formats actuellement), puis transférez-la sur un service Web et créez une base de données SQL à partir de il.

J'ai tout ce qui fonctionne avec CSV, FoxPro, Access, Excel, etc ... Assez facile.

Les classes qui héritent de RawReader, comme RawCSV, RawFoxPro, RawAccess renvoient toutes une structure qui contient un ensemble de données comme l'un des membres. L'ensemble de données contient les données du système brut. Le webservice reçoit cette structure et crée des tables sql et charge les données dans celui-ci. Cela a déjà été codé et fonctionne très bien.

Mon problème vient maintenant à la lecture en SQL. Évidemment, je pourrais suivre le même chemin, lire la DB SQL distante dans un ensemble de données, transférer l'ensemble de données comme ci-dessus, etc ... Mon «problème» arrive où je sens que ça n'a pas beaucoup de sens de transférer un db SQL à un jeu de données, transférez-le via le service Web, puis essayez de recréer par programme la base de données SQL. J'ai l'impression de perdre beaucoup de détails granulaires de la base de données SQL (tailles de champs, informations étendues, etc.) Il semble plus facile de créer une sauvegarde de la base de données, de la convertir en objet stream et de transférer la sauvegarde sur le webservice. Mais c'est là que réside le problème ...

Puisque toutes les classes héritent de la classe de base, elles sont configurées pour renvoyer un DataSet. La méthode hack-ish consiste simplement à ajouter un objet stream à la structure de retour et dans mon webservice ajouter un autre code pour faire un cas particulier pour les sources SQL, mais j'essayais d'éviter cela.

Avez-vous des idées sur la façon «appropriée» de faire quelque chose comme ça?

Répondre

0

Je ne vois pas vraiment le problème, DataColumn, DataTable et DataSet ont un membre ExtendedProperties qui vous permet de joindre des métadonnées arbitraires. Vos lecteurs RawXxx peuvent tous supposer que les données finiront par se retrouver dans une base de données SQL afin qu'ils puissent tous être d'accord pour nommer ces éléments de métadonnées. Du côté de la réception, vous ne devez traiter qu'un élément de métadonnées manquant.

+0

Merci, je pense que je vais finir par l'utiliser pour stocker les informations de la colonne pour la récréation sur le côté de réception. Je savais qu'il me manquait quelque chose d'évident !! – Wolfmarsh

Questions connexes