Comment faire pour supprimer les contraintes de datatable .NET?
Je ne peut pas définir les contraintes dans ma datatable si je fusionner deux tables de données dt1.Merge(dt2);
Il indique une erreur comme ceci Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
Par défaut je l'ai vue dans visualizer il montre les contraintes comptent comme 2. Comment faire pour supprimer les contraintes de datatable et résoudre cette erreur?
OriginalL'auteur Ravi | 2012-01-11
Vous devez vous connecter pour publier un commentaire.
De supprimer les contraintes d'un DataTable vous pouvez utiliser la méthode Clear de la Limite de propriété:
OriginalL'auteur Peter Meinl
essayer de réitérer les contraintes de la datatable et de les supprimer à l'aide de
OriginalL'auteur Shoaib Shaikh
Alternativement, vous pouvez également faire
pour créer une copie de la table sans contraintes
OriginalL'auteur Yemoku
EDIT:
Ok c'est plus clair maintenant: Vous ne pouvez pas supprimer les contraintes, ils sont désactivés pendant l'opération de fusion, puis activer automatiquement après la fusion si elles peuvent être activées.
Que l'erreur est comme après l'opération de fusion est terminée, les Contraintes ne peuvent pas être activés en raison de certaines des valeurs non valides dans la cible datatable. Donc, je pense que vous devez explicitement mise à jour de la cible datatable dt2 valeurs avant l'opération de fusion commence. Cela peut être fait en regardant les contraintes dans la datatable dt1 et de la résolution de ces contraintes dans la datatable dt2 avec le code (par la mise à jour de la valeur null ou non unique ou foriegn de données clés dans la cible datatable dt2); et puis démarrez l'opération de fusion.
L'extrait suivant et lien à partir de MSDN explique cela, tout en faisant l'opération de Fusion:
Lors d'une fusion, les contraintes sont désactivées. Si aucune contrainte ne peut pas être activé à la fin de fusionner les, un ConstraintException est généré et la fusion de données est conservé tandis que les contraintes sont désactivés. Dans ce cas, le EnforceConstraints propriété est définie sur false, et toutes les lignes qui ne sont pas valides sont marqués dans l'erreur. Les erreurs doivent être résolues avant de tenter de réinitialiser le EnforceConstraints true à la propriété.
http://msdn.microsoft.com/en-us/library/803bh6bc.aspx
Essayez de définir EnforceConstraints valeur false à la propriété pour votre jeu de données avec : ds.EnforceConstraints = false et puis d'effacer les contraintes et les Fusionner ensuite..
J'ai mis à jour la réponse..!
merci pour votre aide je l'utiliser en dessous de concept pour supprimer les contraintes de dt2
DataTable dtnew = dt2.Rows.Cast<DataRow>().CopyToDataTable(); dt1.Merge(dtnew);
OriginalL'auteur VS1