2011-03-19 105 views
0

我有一個網頁的Default.aspx生成每個新用戶的ID後,該ID將被subbmitted數據庫上的按鈕點擊Default.aspx ...如何爲每個用戶生成唯一的ID?

如果其他用戶也進入相同的時間ID是一樣的......直到他們按下的Default.aspx

如何擺脫這個問題......使......每個用戶獲分配的唯一ID按鈕...

即時通訊使用的讀寫代碼來生成唯一的ID ..

回答

1

你可以使用一個Guid爲ID秒。和,以產生一個唯一的ID:

Guid id = Guid.NewGuid(); 

另一種可能性是在數據庫中使用自動遞增主列,以便它是生成唯一標識符數據庫中。

1

三個選項

  1. 使用GUID:Guid.NewGuid()會生成唯一的GUID。 GUID當然比整數長得多。

  2. 使用intelocked操作遞增共享計數器。 Interlocked.Increment是線程安全的。無論是過程循環的代碼將創建一個新的AppDomain,並重新開始計數的刷新:這是否所有的請求發生在同一個AppDomain中才起作用。

  3. 使用數據庫中的IDENTITY列。該數據庫是專門用來處理這個,那個插入新行的請求中,使用SCOPE_IDENTITY選擇價值認同內存中的數據更新(奧姆斯應該處理這個給你)。 (這是SQL Server,其他數據庫具有相同的功能。)

那裏#3幾乎肯定是最好的。

1

您可以生成一個GUID:

Guid.NewGuid() 

或者你可以讓數據庫插入時生成它。一種方法是通過一個序列。參見Surrogate Keys

維基百科文章從文章:

在數據庫中的代理鍵是用於在任一所建模的世界的實體,或在數據庫中的對象的唯一標識符。代理鍵不是從應用程序數據派生的。

的順序/自動增量列選項將是更簡單,也更容易記住手動查詢您的數據庫(在調試過程中)時,但在我的工作中的DBA說,他通過交換得到了20度%的性能提高到Guids。他使用的是Oracle,和他的數據庫是巨大的,但:)

0

我用一個實用的靜態方法生成的ID,基本上使用完整的日期時間(包括秒),併產生表示3個或4個字符,並返回一個隨機數整個事情,那麼你可以將它保存到數據庫。