Wystarczy użyć zawsze standardowy GUID
w. NETTO...
Gdy chcesz wstawić jakiś GUID
do Oracle po prostu zadzwonić Guid.ToString ("N")
i karmić ten ciąg do Oracle (w tym przykładzie param name jest 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;
Kiedy czytasz RAW
z Oracle użyć :
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);
Następnie można karmić powrócił MyNETVal
do new Guid (MyNETVal)
.
W ten sposób twój kod zawsze zajmuje się formatem .NET, a przełączanie bajtów odbywa się w Oracle-DB ... nie ignorujesz swojego kodu za pomocą kodu konwersji i możesz zachować kod taki sam, gdy przełączasz się na inne DB - po prostu zmień SQL i działaj poprawnie ... SQL może być prostszy w porównaniu z innymi bazami danych, ponieważ niektóre z nich są zgodne z formatem GUID systemu Windows ...
Możliwy duplikat [Konwersja tablicy bajtów z Oracle RAW do System.Guid?] (Http://stackoverflow.com/questions/2667740/convert-byte-array-from-oracle-raw-to -system-guid) –