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