簡體   English   中英

C# 在特定范圍內生成特定長度 唯一 Integer 編號

[英]C# Generate Specific Length With-In Specific Range Unique Integer Number

我正在開發一個 API in.Net Core,我必須在 SQL 表中保存一個 integer 編號。 該數字的長度必須為“9” ,從 000000001 開始的任何數字 - 9 位數字,並且將來永遠不會重復我也希望這個數字在 memory 級別,因為我必須將此數字用於其他目的。 進行一些搜索后,最常見的解決方案之一是使用DateTime.Now.Ticks並修剪其長度,但問題是當並發 HTTP 請求來時,刻度值可能相同。

  1. 解決此問題的一種解決方案是在方法上應用並在數據保存在數據庫中時釋放它,但這會降低應用程序的性能,因為鎖的使用成本很高。
  2. 第二種解決方案是通過引入一個新表並將初始計數器值設置為1 ,因此在每個 HTTP 請求首先應用UnitOfWork從表中讀取值並將其遞增一然后保存它然后處理另一個請求但又在那里是性能損失,而不是最佳解決方案。

那么,有沒有其他更快、更便宜的解決方案呢? 提前致謝

我認為您可以結合 ID(自動增量)創建計算列/字段。 自動 ID 將幫助您插入唯一編號,計算字段將幫助您使該字段生成特定長度。 一個例子:

CREATE TABLE [dbo].[EmployeeMaster](
  [ID] [int] IDENTITY(1,1) NOT NULL,
  [PreFix] [varchar](50) NOT NULL,
  [EmployeeNo]  AS ([PreFix]+ RIGHT('0000000' + CAST(Id AS VARCHAR(9)), 9)) PERSISTED,
  [EmployeeName] VARCHAR(50),
  CONSTRAINT [PK_AutoInc] PRIMARY KEY ([ID] ASC)
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM