J'ai un traitement par lots qui lit les données de plusieurs tables dans un jeu de données basé sur une clé commune. Je construis ensuite un deuxième ensemble de données de l'interrogation de données de destination sur la même clé. À ce stade, j'ai deux Datasets qui sont structurellement identiques (d'une perspective de mise en page de table/colonne). J'ai alors un processus qui ajoute n'importe quelle ligne qui existe dans la source à l'ensemble de données de destination. En outre, le processus tentera également de mettre à jour certaines colonnes en fonction de la clé commune.Utilisation de DataAdapter. Mise à jour pour insérer/mettre à jour des lignes dans un jeu de données (non basé sur des PK) problème
Le problème semble se produire lorsque la commande DataAdapter.UPDATE est appelée avec des lignes existantes à mettre à jour. Erreur: System.InvalidOperationException was unhandled Message = "La table spécifiée dans l'instruction SELECT ne contient pas de colonne de clé ou d'identifiant unique, ou l'instruction SELECT n'inclut pas toutes les colonnes de clé."
Puisque je n'ai aucun moyen de contrôler ce que le PK est sur la base de données de destination, est-il possible de dire à l'adaptateur quelle est la clé pour cette mise à jour particulière? J'ai "personnalisé" définir les clés primaires pour chaque DataTable dans l'ensemble de données.
Il s'agit d'un processus par lots d'interfaçage sans utilisateur et ses exigences de performances sont assez faibles. (pour expliquer l'utilisation des ensembles de données, etc.)
Des pensées?
J'ai mis le PK et continue d'obtenir l'erreur (qui dans les documents d'aide indique que la DB réelle n'a pas de PK viable) – WIDBA