我有一個網頁的Default.aspx生成每個新用戶的ID後,該ID將被subbmitted數據庫上的按鈕點擊Default.aspx ...如何爲每個用戶生成唯一的ID?
如果其他用戶也進入相同的時間ID是一樣的......直到他們按下的Default.aspx
如何擺脫這個問題......使......每個用戶獲分配的唯一ID按鈕...
即時通訊使用的讀寫代碼來生成唯一的ID ..
我有一個網頁的Default.aspx生成每個新用戶的ID後,該ID將被subbmitted數據庫上的按鈕點擊Default.aspx ...如何爲每個用戶生成唯一的ID?
如果其他用戶也進入相同的時間ID是一樣的......直到他們按下的Default.aspx
如何擺脫這個問題......使......每個用戶獲分配的唯一ID按鈕...
即時通訊使用的讀寫代碼來生成唯一的ID ..
三個選項
使用GUID:Guid.NewGuid()
會生成唯一的GUID。 GUID當然比整數長得多。
使用intelocked操作遞增共享計數器。 Interlocked.Increment
是線程安全的。無論是過程循環的代碼將創建一個新的AppDomain,並重新開始計數的刷新:這是否所有的請求發生在同一個AppDomain中才起作用。
使用數據庫中的IDENTITY列。該數據庫是專門用來處理這個,那個插入新行的請求中,使用SCOPE_IDENTITY
選擇價值認同內存中的數據更新(奧姆斯應該處理這個給你)。 (這是SQL Server,其他數據庫具有相同的功能。)
那裏#3幾乎肯定是最好的。
您可以生成一個GUID:
Guid.NewGuid()
或者你可以讓數據庫插入時生成它。一種方法是通過一個序列。參見Surrogate Keys
維基百科文章從文章:
在數據庫中的代理鍵是用於在任一所建模的世界的實體,或在數據庫中的對象的唯一標識符。代理鍵不是從應用程序數據派生的。
的順序/自動增量列選項將是更簡單,也更容易記住手動查詢您的數據庫(在調試過程中)時,但在我的工作中的DBA說,他通過交換得到了20度%的性能提高到Guids。他使用的是Oracle,和他的數據庫是巨大的,但:)
我用一個實用的靜態方法生成的ID,基本上使用完整的日期時間(包括秒),併產生表示3個或4個字符,並返回一個隨機數整個事情,那麼你可以將它保存到數據庫。