GUID 00000000-0000-0000-0000-000000000000 verursacht merge-index-Verletzung
Unser Entwickler hat eine linq-2-sql-Projekt, dass die Gespräche zu meiner Datenbank. Die Datenbank ist eingebunden in die Mergereplikation. Es hat schon einige Zeit in Betrieb und funktionierte tadellos. Eine aktuelle Tabelle Hinzugefügt wurde, um das schema und die jetzt die Probleme verursacht, wenn neue Datensätze Hinzugefügt werden.
Die Benutzer erhalten eine Fehlermeldung, die besagt, dass der index im Zusammenhang mit der guid, die Mergereplikation erstellt automatisch gegen eine unique-Einschränkung.
Was ich sagen kann die Tabelle nicht anders als andere, die beteiligt sind. Ich habe neu die gesamte Replikation Veröffentlichung/Abonnement-Modell von Grund auf neu und alles funktioniert weiterhin aber, dass eine Tabelle.
Jemand irgendwelche Ideen? Die guid erstellt wird, erscheint als 00000000-0000-0000-0000-000000000000 das würde erklären, warum es ein Duplikat ist. Warum ist eine gültige guid, die nicht erstellt von linq?
Sie sollte die post Ihren Kommentar als eine Antwort, wie es wahrscheinlich die Ursache des Problems.
+1 auf alle Eure Antworten... Sie führte mich zu der Lösung, die funktionierte.
InformationsquelleAutor RThomas | 2011-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hast du "new Guid()" irgendwo in Ihrem code-Basis, als was Sie gemeint war: "Guid.NewGuid()"?
InformationsquelleAutor MarkPflug
Bei der Verwendung von Linq-To-SQL, stellen Sie sicher, dass die IsDbGenerated Eigenschaft ist wahr, und die Datenbank ist eigentlich setup zum erstellen einer ID (mit newid() als der Standardwert).
Sonst, stellen Sie sicher, dass die .net-code ist tatsächlich generieren von IDs.
InformationsquelleAutor Michael Stum
Hatte ich Stand vor dem ähnlichen problem. Mark hat erwähnt in dem Kommentar, den Guid - () muss verwendet werden.
Stattdessen
InformationsquelleAutor Vinay
Was wir entdeckt haben, während der Erforschung Ihrer Vorschläge war, dass diese bestimmte Tabelle war die einzige Tabelle, die im Lieferumfang enthalten die guid-Feld überhaupt in der DBML-Klasse. Alle anderen Tabellen Hinzugefügt worden, um die DBML vor der Veröffentlichung der Datenbank für die merge Replikation (daher Ihre jeweiligen guid-Felder waren nicht in der DBML).
So, ich manuell gelöscht, die guid-Feld aus der problem-Tabelle in der DBML und das problem ging Weg. Das problem war in der Tat verursacht von LINQ nicht das anlegen der guid, wie es in den generierten Klassen.
In diesem Fall war es am einfachsten, einfach verlassen guid-Erstellung, die Veröffentlichung löst und newid () - default-Wert, wie dies bereits im SQL. (es ist immer noch in der Datenbank, nicht nur die dbml)
Nichts in der Anwendung, verwendet die guid-Felder... es ist rein für SQL zum verwalten der merge-Replikation-Schema, das wir implementiert haben - also die Entfernung von der DBML war die einfachste.
InformationsquelleAutor RThomas