Einzelnen Beitrag anzeigen

Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#5

AW: Firebird UDF mit Delphi für UUID

  Alt 17. Jan 2013, 13:45
Okay, ich habe jetzt doch den ADO.NET Firebird Provider geändert. Ist zwar auch nicht schön, da der Bug hoffentlich irgendwann in Firebird gefixt wird, und ich den .NET Provider dann wieder zurückändern muss, aber nu funktioniert es.

Falls es wen interessiert:
In der Datei FirebirdSql\Data\Entity\SqlGenerator.cs habe ich folgende Änderung durchgeführt
Code:
public override ISqlFragment Visit(DbConstantExpression e)
{
...
         case PrimitiveTypeKind.Guid:
            result.Append("CHAR_TO_UUID('");
            // result.Append(((Guid)e.Value).ToString()); < Originalzeile
            result.Append(GUID_TO_UUID(((Guid)e.Value).ToString().ToUpper())); // Workaround
            result.Append("')");
            break;
...
}

// Und diese Funktion hier bringt die Zeichenfolge in die "falsche" Reihenfolge, damit sie Firebird-Kompatibel ist:
private String GUID_TO_UUID(string UUID)
{
    return UUID.Substring(6, 2) +
        UUID.Substring(4, 2) +
        UUID.Substring(2, 2) +
        UUID.Substring(0, 2) +

        UUID.Substring(8, 1) +

        UUID.Substring(11, 2) +
        UUID.Substring(9, 2) +

        UUID.Substring(13, 1) +

        UUID.Substring(16, 2) +
        UUID.Substring(14, 2) +

        UUID.Substring(18);
}
Jetzt ist der Fehler weg
  Mit Zitat antworten Zitat