2009-07-02 22 views
1

0x80040237 Doppelten Schlüssel kann nicht eingefügt werden.Können Primärschlüssel nach dem Löschen wiederverwendet werden?

Ich versuche, eine Import-Routine für MSCRM4.0 durch die CrmService zu schreiben. Dies war bis zu diesem Zeitpunkt erfolgreich. Anfangs ließ ich CRM nur die Primärschlüssel der Datensätze generieren. Mein Kunde wollte jedoch den Schlüssel einer benutzerdefinierten Entität auf vordefinierte Werte setzen können. Dadurch können wir möglicherweise wissen, welche Daten von unserem Installationsprogramm erstellt wurden und welche Daten nach der Installation erstellt wurden.

ich getestet, um sicherzustellen, dass die Guids eingestellt werden kann, wenn die CrmService.Update() -Methode aufrufen und die Ergebnisse zeigten, dass Datensätze mit unseren gewünschten Werten erstellt wurden. Ich lief meinen Import und alles schien erfolgreich zu sein. Beim Ändern meines Validierungscodes der Importdateien löschte ich die Daten (über die Crm-Browser-Schnittstelle) und versuchte erneut zu importieren. Leider löst es jetzt einen doppelten Schlüsselfehler aus.

Warum wird dieser Fehler ausgelöst wird? Löscht die Crm-Schnittstelle den Datensatz oder ist er noch vorhanden, aber vor den Augen des Benutzers verborgen? Gibt es eine Möglichkeit, sicherzustellen, dass ein gelöschter Datensatz dauerhaft gelöscht wird und die Guid frei wird? In einer Live-Umgebung hätten diese Guids nie existiert, aber während meiner Entwicklung brauche ich diese Importe, um erfolgreich zu sein.

By the way, ich habe dieses Problem in Anbetracht, bedeutet dies, dass statisch Einstellung Guids Praxis nicht empfohlen ist?

Antwort

6

Soweit kann ich sagen, Entitäten sind soft-deleted, so dass es nicht möglich wäre, diese Guid wiederzuverwenden, es sei denn, Sie (oder der Löschdienst) löschte die Entität aus der Datenbank.

Zum Beispiel in der LeadBase-Tabelle finden Sie ein Feld namens DeletionStateCode, ein Wert von 0 bedeutet, dass der Datensatz nicht gelöscht wurde.

Ein Wert von 2 markiert den Datensatz zum Löschen. Es gibt einen Löschdienst, der alle 2 (?) Stunden ausgeführt wird, um diese Datensätze physisch aus der Tabelle zu löschen.

0

Zahir ist korrekt.

Nachdem Sie die Datensätze importiert und gelöscht haben, können Sie den Löschdienst zu einem Zeitpunkt starten, den Sie mit this tool auswählen. Das wird es einfacher machen, Importe und Reimporte zu testen.

Verwandte Themen