none
GUID vs string in CustomConflictResolver RRS feed

  • Frage

  • Hallo,

    ich beobachte ein seltsames Verhalten in unserem CustomConflictResolver auf .NET-Basis. In seltenen Fällen erhalte ich die Meldung, daß das benutzerdefinierte Dataset, das ich zurückliefere nicht dem erwarteten Schema entspricht, obwohl ich es mit Copy aus einem der beiden gelieferten Datasets (publisher oder subscriber) erzeuge.

    Daraufhin habe ich mal die Schemata der beiden Datasets protokollieren lassen - und nun bin ich etwas ratlos, denn folgendes passiert für ALLE Guid-Spalten:

    • Ist der Inhalt einer Guid-Spalte NULL, so ist der Datentyp der Spalte GUID NULL
    • Ist der Inhalt einer Guid-Spalte NICHT NULL, so ist der Datentyp der Spalte string NULL

    Somit hat der Konfliktlöser jedesmal, wenn er einen Konflikt beheben soll, der auf einer Guid-Spalte erkannt wurde, bei dem der eine Datensatz NULL enthält und bei dem anderen einen faktischen Wert, für diese Spalte nach dem Copy den falschen Datentyp...

    Im konkreten Fall sieht das dann wie folgt aus:

    • Der Subscriber hat den Wert NULL in der Spalte Rechnungsempfänger, der Publisher den Wert {xxxxxxxxx}. 
    • Somit hat die Spalte auf dem Publisher den Datentyp string - auf dem Subscriber hingegen Guid
    • Ich erzeuge eine Kopie des Subscriberdatensatzes und liefere AcceptCustomDataset zurück

    ...und Fehler....

    Kennt jemand das Problem ? Was macht SQL-Server hier - ist doch völliger Blödsinn ...

     

     

    Montag, 28. Juni 2010 09:41