我有做2 AJAX調用一個Web Api
方法,做以下邏輯頁:網頁API併發問題察看項目存在
- 檢查該項目是否存在。如果是這樣,檢索項目。
- 如果項目不存在,請創建它。
代碼:
if (!_db.Items.Any(x => x.EntityId == requestItem.EntityId &&
x.UserId == request.UserId))
{
// item does not exist, so create it.
var item = new Item();
// set some properties here...
_db.Items.Add(item);
}
我遇到的問題是,項目正在創造非常快,因爲Ajax調用同時運行,我結束了兩個項目。但我只想讓1被創建。我不想向用戶拋出錯誤。我想只能創建一個項目,如果一個真的不存在。我怎樣才能做到這一點?
我看到這個post設置與實體框架的併發檢查,但我不想向用戶拋出一個錯誤,所以我不知道設置EF併發是我需要做的。值不會相互覆蓋。兩個電話正在(接近)同一時間發生,所以都看到表中有0個項目。
如果你不想錯誤回到用戶,只需用try-catch包裝進程即可。 – Tommy
我沒有遇到覆蓋以前值的數據。因此,檢查RowVersion屬性將不起作用,因爲該項目尚不存在。我無法限制1個項目的創建。 – duyn9uyen
是否可以接受複合唯一密鑰? – Tommy