2017-06-07 1 views
1

Je développe une application C# dans laquelle je dois lire/écrire une base de données MS SQL existante. J'ai décidé d'utiliser la classe d'objet pour la base de données mais les colonnes de la table peuvent être modifiées pendant l'exécution et cela provoque une exception en raison d'une tentative d'écriture d'une nouvelle ligne (dans le cas d'une nouvelle colonne non nulle). Existe-t-il des recommandations sur la façon de préserver l'approche par objet de la base de données et de traiter les tables de base de données à variables? Il n'est pas nécessaire d'avoir l'objet mis à jour dans le runtime, juste pour gérer les nouvelles colonnes - les remplir avec une valeur par défaut valide. J'ai utilisé l'assistant de configuration de source de données dans VS2015 ce qui génère des objets pour la base de données et tout va bien. Quand une table a une nouvelle colonne, je dois réexécuter l'assistant pour mettre à jour les objets et définir la nouvelle valeur appropriée. Je ne peux rien modifier dans la structure de la base de données (système ERP existant). La base de données est énorme (des centaines de tables ont chacune plus de 60 colonnes), donc je cherche des moyens automatisés pour générer les objets de la base de données.Approche objet de la base de données à schéma variable

J'espère que j'ai juste négligé (en tant que débutant) une solution évidente. Merci pour votre suggestion.

Petr

Répondre

0

Je recommande de faire ce qui suit:

  • Créer un ensemble de tables d'importation avec les colonnes nécessaires et de laisser les tables fixes
  • Laissez votre application copier les données sur les tables d'importation
  • Mise à jour des tables de production dans la base de données à partir des tables d'importation avec une procédure stockée
+0

Merci pour le commentaire. Je suis limité du côté de la base de données. Mais votre suggestion est bien sûr la meilleure option (elle surmonterait également certains problèmes de liaison de données). Puis-je comprendre que la situation à laquelle je fais face n'est pas très commune selon votre expérience? = Est-ce que je cherche quelque chose qui n'est pas disponible? –

+0

Je n'ai jamais rencontré un tel scénario. D'après mon expérience, les solutions d'accès aux données de Microsoft ne sont pas très flexibles en ce qui concerne les changements de métadonnées dans les tableaux. Dans SSIS, vous devrez faire de la magie noire pour le faire. Je pense qu'avec EF, ce sera pareil. Pas complètement impossible mais définitivement "inconfortable". Si vous ne pouvez rien changer dans la base de données, je suggère de mettre en œuvre votre solution avec SqlConnection classique, SqlCommand et ainsi de suite –

+0

Merci encore de partager votre expérience. –