在我的 C# 项目中,我有一个方法询问数据库中是否存在对象,如果不存在则创建它。现在,如果两个用户同时提出相同的问题,他们都会得到 null,因此流程将保存到 db,这对于两个重复项来说是不可能的,因此会引发 sql 异常。请问我该如何处理这个问题?
这是我的代码:
var date = DateTime.UtcNow.Date;
var todayCelebPageView = _celebPageViewsRepo.GetAll().SingleOrDefault(d => d.iCelebId == celebId && d.dDate == date);
if (todayCelebPageView != null)
{
todayCelebPageView.iScore++;
_celebPageViewsRepo.Save();
}
else
{
todayCelebPageView = new MovliCelebPageView() {dDate = date, iCelebId = celebId, iScore = 1};
_celebPageViewsRepo.Add(todayCelebPageView);
_movliRepository.DbContext.Entry(todayCelebPageView).State = System.Data.EntityState.Added;
_celebPageViewsRepo.Save();
}