我使用的是当前时钟滴答作为随机数生成的种子。 随机数是伪GUID使用,并在我的数据库检查将确保它不返回之前存在。 平均而言,这个方法会被周围陆续10K次过程的生命周期中调用。
我担心的是,相同的数字可能会产生背靠背导致多个不必要的递归调用我的数据库检查相同的ID。 我想如果可能避免这种情况。 什么是测试这种情况下最好的方法是什么?
如果它的事项,应用程序是.NET 4和数据库是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()