Guid.Tostring()在我的数据库中提供了与UUID_TO_CHAR不同的表示

Vin*_*ent 3 c# firebird uuid guid firebird2.5

我正在使用带有UUID的Firebird数据库作为主键但我遇到了以下问题:

我的C#应用​​程序中相同Guid的文本表示与数据库的不同.我正在使用UUID_TO_CHAR函数和我的C#应用​​程序中的数据库中获取文本表示Guid.ToString().

区别在于Firebird数据库解释UUID与.net框架的方式,我相信他们用不同的字节顺序读取它们

例如,数据库中的guid如下所示:

FADE3E40-6227-5B40-BBB9-8492859EBA66
Run Code Online (Sandbox Code Playgroud)

我的C#应用​​程序中的相同guid看起来像这样:

403edefa-2762-405b-bbb9-8492859eba66
Run Code Online (Sandbox Code Playgroud)

有没有办法在我的数据库中显示它们与在C#中显示的方式相同.或相反亦然?

有没有办法在从数据库中获取它们并将它们放入数据库时​​进行转换,因此我不必在任何地方使用格式?

Evk*_*Evk 5

要获得与firebird相同的表示形式 - 将guid的所有字节转换为十六进制:

BitConverter.ToString(guid.ToByteArray()).Replace("-", "")
Run Code Online (Sandbox Code Playgroud)

如有必要,您可以选择在组之间添加" - ",例如:

static class Extensions {
    public static string ToFirebirdString(this Guid guid) {
        var raw = BitConverter.ToString(guid.ToByteArray()).Replace("-", "");
        return $"{raw.Substring(0, 8)}-{raw.Substring(8, 4)}-{raw.Substring(12,4)}-{raw.Substring(16, 4)}-{raw.Substring(20)}";
    }
}
Run Code Online (Sandbox Code Playgroud)