我從控制器產生的用戶ID以這種方式違反PRIMARY KEY約束無法插入Dublicate主鍵
long lastUserId = 0;
var userProfile = from m in db.UserProfiles select m;
userProfile = userProfile.Where(s => s.DbType == "OFFLINE");
foreach (var c in userProfile)
{
lastUserId = c.UserId;
}
if (lastUserId != 0)
{
lastUserId = lastUserId + 1;
}
else
{
lastUserId = 1000001;
}
當在同一時間任何兩個人登記,打我得到鍵衝突的錯誤控制器現在該怎麼辦?
您可以使用GUID來代替長lastUserId –
如果可以的話,讓數據庫處理這個問題。使用SQL Server中的IDENTITY列或Oracle中的SEQUENCE來爲每個請求提供唯一值 –