Просто всегда используйте ваш стандартный GUID
в .NET ...
Если вы хотите вставить GUID
в Oracle, вы просто вызываете Guid.ToString ( "N")
и передаете эту строку в Oracle (в этом примере имя параметра MyNETVAL
):
INSERT INTO MyTable ( MyRAWCol)
SELECT HEXTORAW (SUBSTR (MyNETVal, 6, 2) || SUBSTR (MyNETVal, 4, 2) || SUBSTR (MyNETVal, 2, 2) || SUBSTR (MyNETVal, 0, 2) || SUBSTR (MyNETVal, 10, 2) || SUBSTR (MyNETVal, 8, 2) || SUBSTR (MyNETVal, 14, 2) || SUBSTR (MyNETVal, 12, 2) || SUBSTR (MyNETVal, 16, 16)) FROM DUAL;
Когда вы читаете RAW
из Oracle, вы используете:
SELECT
SUBSTR (HexV, 6, 2) || SUBSTR (HexV, 4, 2) || SUBSTR (HexV, 2, 2) || SUBSTR (HexV, 0, 2) || SUBSTR (HexV, 10, 2) || SUBSTR (HexV, 8, 2) || SUBSTR (HexV, 14, 2) || SUBSTR (HexV, 12, 2) || SUBSTR (HexV, 16, 16) AS MyNETVal
FROM (SELECT RAWTOHEX (MyRAWCol) HexV FROM MyTable);
Затем вы можете подать возвращенные MyNETVal
в new Guid (MyNETVal)
.
Таким образом, ваш код всегда имеет дело с форматом .NET, и переключение байтов происходит в Oracle-DB ... вы не добавляете код к коду преобразования и можете сохранить код при сохранении кода при переходе на другие БД - просто измените SQL, и вы уже в работе ... SQL может стать проще с другими БД, потому что некоторые из них следуют формату GUID Windows ...