Basta utilizzare sempre il vostro standard GUID
in. NETTO...
Quando si vuole inserire qualche GUID
in Oracle basta chiamare Guid.ToString ("N")
e mangimi che stringa da Oracle (in questo esempio il param name è 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;
Quando si legge un RAW
da Oracle si utilizza :
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);
Quindi è possibile alimentare il restituito MyNETVal
in new Guid (MyNETVal)
.
In questo modo il codice si occupa sempre del formato .NET e il cambio di byte avviene nel DB Oracle ... non si polarizza il codice con il codice di conversione e si può mantenere lo stesso codice di codice quando si passa a altro DB: basta modificare l'SQL e si è attivi e in esecuzione ... l'SQL potrebbe diventare più semplice con altri DB perché alcuni seguono il formato GUID di Windows ...
Eventuali duplicati di [Convertire array di byte da Oracle RAW a System.Guid?] (Http://stackoverflow.com/questions/2667740/convert-byte-array-from-oracle-raw-to -system-guid) –