Jag har ett problem som är som följer : Hej Jonas, jag gissar att det här redan har löst sig för dig. Om du läser mitt svar så vore det roligt att höra hur du gjorde då du skrev en så bra förklaring. Ett sätt att få ut väldigt unika värden som kan användas är att använda GUID som windows servern genererar och som du kan fånga i kod.Hur unikt är GetHashCode för ett anonymt objekt
Jag utvecklar integrationer mellan system, specifikt ett system som mitt företag är återförsäljare av och andra affärssystem.
I "mitt" system återfinns ett begrepp som vi kallar "rapportnummer" som är ett löpnummer som representerar kombinationen av en tillverkningsorder och en operation. Det finns ingen direkt logik i kopplingen mellan dessa, så kombinationen tillverkningsorder 10322 och operation 10, kan exempelvis få rapportnummer 223344. (Vilket för övrigt ursprungligen, för vår del, kommer från affärssystemet Monitor, även om det återfinns i andra system.)
Jag är nu på väg att göra en integration mot Microsofts affärssystem Dynamics 365, där detta begrepp inte finns.
För att då komma runt det, vill jag skapa en motsvarighet till rapportnummer, med hjälp av dessa två värden (tillverkningsordernummer och operationsnumret)
En första tanke jag hade var att slå samman värdena, men det visar sig kunna blir för långt, och dessutom innehålla bokstäver.
Rapportnummer-fältet är numeriskt och en Integer i SQL Server, så att göra om varje tecken till ASCII-kod är inte ett alternativ.
Ett hyfsat realistiskt exempel (i bemärkelsen längd och använda tecken) på ett tillverkningsordernummer är "TO-11435-5", även om jag gärna vill ta höjd för att kunna hantera längre strängar.
Denna sträng måste jag alltså göra om till en siffra som blir så unik som möjligt, och som inte under överskådlig framtid kolliderar med en tidigare använd siffra.
Mitt hittills bästa alternativ för att generera siffra är använda GetHashCode för den sammanslagna strängen av tillverkningsorder och operation.
Min fråga är bara hur sannolikt är det att ett sådant tal kolliderar. Jag har läst att GetHashCode inte genererar unika tal, exempelvis så ger
"furnaces" och "ferrate" samma resultat, men jag har inte en aning om det är "en på miljonen" eller "en på tiotusen".
Det första alternativet hade varit acceptabelt, det sista, inte det minsta ....
Finns det något bättre alternativ?
Tack på förhand
Jonas
PS : Integrationen bygger på att jag inte hämtar datan själv, utan får den "serverad" via en webservice som vi tyvärr inte utvecklat, och därför inte heller kan välja att returnera något unikt begrepp som skulle kunna användas som rapportnummer.
Lite referensmaterial till det jag nämnt ovan finns här."Sv: Hur unikt är GetHashCode för ett anonymt objekt
Hur gick det?
Hälsningar Pelle