GUID de 00000000-0000-0000-0000-000000000000 provoquant la fusion de l'indice de violation
Notre développeur a une linq-2-projet sql qui parle à ma base de données. La base de données est impliquée dans la réplication de fusion. Il a été en usage pendant un certain temps et a été fonctionne correctement. Une récente table a été ajoutée au schéma et maintenant est à l'origine des problèmes lorsque de nouveaux enregistrements sont ajoutés.
À l'utilisateur un message d'erreur indiquant que l'indice lié à la guid que la réplication de fusion crée automatiquement est en train de violer une contrainte unique.
De ce que je peux dire à la table n'est pas différents que les autres qui sont impliqués. J'ai recréé l'ensemble de la réplication de publication/abonnement modèle à partir de zéro et tout continue de fonctionner, mais qu'une seule table.
Quelqu'un a des idées? Le guid en cours de création apparaît comme 00000000-0000-0000-0000-000000000000 qui expliquerait pourquoi c'est un doublon. Pourquoi est un guid valide n'est pas créé par linq?
Vous devriez poster votre commentaire en réponse, comme c'est probablement la cause du problème.
+1 à tous de vos réponses... ils m'ont amené à la solution qui a fonctionné.
OriginalL'auteur RThomas | 2011-08-09
Vous devez vous connecter pour publier un commentaire.
Avez-vous utilisé le "nouveau Guid()" quelque part dans votre code de base lorsqu'il s'agit de "Guid.NewGuid()"?
OriginalL'auteur MarkPflug
Lors de l'utilisation de Linq-to-SQL, assurez-vous que le IsDbGenerated propriété est vrai et la Base de données est en fait le programme d'installation pour créer un ID (en utilisant newid() la valeur par défaut).
Sinon, assurez-vous que l' .net code est en fait générer des Identifiants.
OriginalL'auteur Michael Stum
J'ai dû faire face le problème similaire. En tant que Marque est mentionnée dans le commentaire, le Guid() doit être utilisée correctement.
Au lieu d'utiliser
OriginalL'auteur Vinay
Ce que nous avons découvert lors de mes recherches de vos suggestions est que ce tableau était le seul tableau qui inclus le champ guid dans les DBML classe. Tous les autres tables ont été ajoutées à la DBML avant la publication de la base de données pour la réplication de fusion (d'où leur respective guid champs n'ont pas été inclus dans le DBML).
Donc, j'ai supprimé manuellement le champ guid de la table de problème dans les DBML et le problème a disparu. Le problème était en fait causé par LINQ ne créant pas le guid comme il se doit dans les classes générées.
Dans ce cas, il était plus facile de simplement laisser guid de la création à la publication des déclencheurs et newid() valeur par défaut établies en SQL. (il est encore dans la base de données, pas seulement dans les dbml)
Rien dans l'application utilise ces champs guid... c'est purement pour SQL pour gérer la réplication de fusion dispositif que nous avons mis en œuvre - afin de les retirer de la DBML était le plus facile.
OriginalL'auteur RThomas