0
我實現web服務,這是簡單地增加新的記錄,我想每個用戶的記錄數限制爲10實體框架:如果傳遞(計數),並加入過多的記錄
var linksCount = _context.Quicklinks.Count(q => q.UserId == _principalInfo.UserId);
if (linksCount < 10)
{
_context.Quicklinks.Add(newItem);
_context.SaveChanges();
return newItem;
}
當在很短的時間內有很多請求時,服務會傳遞if語句,即使數字實際上大於10,它也會添加新記錄。是否有機會在不鎖定此代碼片段的情況下解決此問題?
緩存是否有可能發生? –
@JonS否 - 考慮兩個快速請求。兩者都同時執行'var linksCount ... if(linksCount <10)',都看到9並進入'if'。然後添加'newItem',最後以11結尾。 –
你需要鎖定某種類型來解決這個問題,不管它在你的c#代碼中,還是你編寫一些自定義的SQL來執行添加,它仍然會行/表鎖定。 –