Clock Ticks als Zufallszahl verwenden

Ich verwende die aktuellen Taktstriche als Startwert für die Zufallszahlengenerierung. Die Zufallszahl wird in einer Pseudo-GUID verwendet und eine Überprüfung in meiner Datenbank stellt sicher, dass sie nicht bereits vorhanden ist, bevor sie zurückgegeben wird. Im Durchschnitt wird diese Methode während des gesamten Prozesses etwa 10.000 Mal hintereinander aufgerufen.

Ich mache mir Sorgen, dass eine identische Nummer möglicherweise hintereinander generiert wird, was zu mehreren unnötigen rekursiven Aufrufen meiner Datenbank führt, die nach derselben ID suchen. Ich möchte dies nach Möglichkeit vermeiden. Was ist der beste Weg, um dieses Szenario zu testen?

Wenn es darauf ankommt, ist die Anwendung .NET 4 und die Datenbank SQL Server 2008.

private static string GenerateUniqueDelId()
{
    // Generate a random integer using the current number of clock ticks as seed.
    // Then prefix number with "DEL" and date, finally padding random integer with leading zeros for a fixed 25-character total length.
    int seed = (int)DateTime.Now.Ticks;
    Random number = new Random(seed);
    string id = string.Format("DEL{0}{1}", DateTime.Today.ToString("yyyyMMdd"), number.Next().ToString("D14"));

    // Lookup record with generated ID in Sesame. If one exists, call method recursively.
    string query = "SELECT * FROM Lead WHERE Esm_Id = @Esm_Id";
    SqlParameter[] parameters = { new SqlParameter("@Esm_Id", id) };
    if (DataManager.GetRow(query, parameters, DelConnection.Sesame) != null) return GenerateUniqueDelId();

    // Otherwise, return ID.
    return id;
}   //// End GenerateUniqueDelId()

Antworten auf die Frage(2)

Ihre Antwort auf die Frage