我有一个使用 Unity 作为 IoC 的 asp.net MVC4 应用程序。我的控制器的构造函数接受一个存储库,而该存储库接受一个 UnitOfWork (DBContext)。一切似乎都正常,直到来自同一会话的多个 ajax 请求发生得太快。Store update, insert, or delete statement affected an unexpected number of rows (0)
由于并发问题,我收到错误。这是从 ajax 请求调用的方法的样子:
public void CaptureData(string apiKey, Guid sessionKey, FormElement formElement)
{
var trackingData = _trackingService.FindById(sessionKey);
if(trackingData != null)
{
formItem = trackingData.FormElements
.Where(f => f.Name == formElement.Name)
.FirstOrDefault();
if(formItem != null)
{
formItem.Value = formElement.Value;
_formElementRepository.Update(formItem);
}
}
}
这仅在 ajax 请求快速发生时才会发生,这意味着快速。当请求以正常速度发生时,一切似乎都很好。就像应用程序需要时间来赶上一样。不知道我需要如何处理我的存储库中的并发检查,所以我不会错过更新。另外,我尝试将“MultipleActiveResultSets”设置为 true,但没有帮助。