我在我的數據庫中有一個註冊表,其中的字段RegistrationNumber
需要唯一。保證數據庫中的唯一值
我想知道什麼是最好的方法來保證我會在每種情況下提供唯一的編號。
我要做的就是在我的Repository
我保存新的註冊,是這樣的:
void IMyRepository.Repository(Registration registration)
{
registration.RegistrationNumber = _getNewRegistrationNumber();
dbContext.SaveChanges();
}
private string _getNewRegistrationNumber()
{
// what to do? get last registration number and increment? it could be
// either integers or integers mixed with letters.
}
我擔心什麼是如果兩個人在同一時間完成註冊表格,我怕在第一個到達dbContext.SaveChanges();
之前,第二個將進入_getNewRegistrationNumber()
函數,並且可能獲得相同的RegistrationNumber
。
有沒有建議嗎?
[編輯] :GUID過長
創建一個GUID可能是最好還是讓DB分配一個自動遞增值。 – ChiefTwoPencils
https://www.bing.com/search?q =數據庫中的保證+獨特+值+ ......有人試圖實現這樣的事情的可能性很小......甚至可能創建了諸如獨特密鑰之類的數據庫功能或自動增量字段... –
@ChiefTwoPencils我喜歡這個主意,但我希望它是一個字符串值,因爲所有的registrationNumbers都應該具有相同的長度。 – joks