Glupi, glupi Oracle!!! i GUID
Ne mogu rečima da opišem koliko me je ova GLUPAVA baza podataka koštala vremena i živaca svojom samovoljom i nepoštovanjem konvencija koje na ostalim bazama s kojima imam dodira rade kao sat.
Izgubio sam ceo dan tražeći zašto mi objekat, koji za kluč ima GUID nakon čuvanja u Oracle bazi dobija sasvim drugi izgled. Odgovor na to pitanje i dalje ne znam, ali sad znam kako da zaobiđem problem.
Ako treba da koristiš GUID na više baza i to treba da radi konzistentno, nemoj da koristiš GUID kao takav jer različite baze mogu drugačije da ga mapiraju/čuvaju šta god. Bolje čuvaj string, a GUID nakon što jednom generišeš, lepo pozoveš Guid.ToString() i zaboraviš da je ikad bio GUID.
Ovo verovatno nije dobro za brzinu upita i indeksiranje, ali će ti uštedeti sate i sate uzaludnog debagiranja.
Drugo rešenje, ako koristiš Nhibernate, jeste da napraviš GuidUserType kojim ćeš se pobrinuti da se GUID konzistentno mapira na sve baze.
Izgubio sam ceo dan tražeći zašto mi objekat, koji za kluč ima GUID nakon čuvanja u Oracle bazi dobija sasvim drugi izgled. Odgovor na to pitanje i dalje ne znam, ali sad znam kako da zaobiđem problem.
Ako treba da koristiš GUID na više baza i to treba da radi konzistentno, nemoj da koristiš GUID kao takav jer različite baze mogu drugačije da ga mapiraju/čuvaju šta god. Bolje čuvaj string, a GUID nakon što jednom generišeš, lepo pozoveš Guid.ToString() i zaboraviš da je ikad bio GUID.
Ovo verovatno nije dobro za brzinu upita i indeksiranje, ali će ti uštedeti sate i sate uzaludnog debagiranja.
Drugo rešenje, ako koristiš Nhibernate, jeste da napraviš GuidUserType kojim ćeš se pobrinuti da se GUID konzistentno mapira na sve baze.
Коментари
Постави коментар