UnityをIoCとして使用しているasp.netMVC4アプリケーションがあります。私のコントローラーのコンストラクターはリポジトリーを取り、そのリポジトリーは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に設定しようとしましたが、役に立ちませんでした。