現在のクロックティックを乱数生成のシードとして使用しています。乱数は疑似 GUID で使用され、データベースをチェックすると、戻る前に乱数がまだ存在しないことが確認されます。平均して、このメソッドはプロセスの存続期間中に約 10,000 回連続して呼び出されます。
私の懸念は、同じ番号が連続して生成され、同じ 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()