Сначала я попробовал приведенный ниже код.
Код: Выделить всё
await _testRepository.InsertAsync(test);
await _xyzRepository.InsertAsync(xyz);
Код: Выделить всё
try
{
var test = new Test();
using (var uow = _unitOfWorkManager.Begin(TransactionScopeOption.RequiresNew))
{
int? tenantId = _unitOfWorkManager.Current.GetTenantId();
using (_unitOfWorkManager.Current.SetTenantId(tenantId))
{
await _testRepository.InsertAsync(test);
var xyz = new XYZ();
await _xyzRepository.InsertAsync(xyz);
await _unitOfWorkManager.Current.SaveChangesAsync();
await uow.CompleteAsync();
}
}
}
catch (Exception ex)
{
throw new UserFriendlyException(ex.Message);
}
Сообщение:
Ожидается, что операция с базой данных затронет 1 строку (строки), но на самом деле затронула 0
строк. Данные могли быть изменены или удалены после загрузки объектов. См. http://go.microsoft.com/fwlink/?LinkId=527962 для
информации о понимании и обработке исключений оптимистического параллелизма
.
трассировка стека:
at
Microsoft.EntityFrameworkCore.Update .AffectedCountModificationCommandBatch.ThrowAggregateUpdateConcurrencyException(Int32
commandIndex, Int32 ожидаемыйRowsAffected, Int32 rowsAffected) at
Microsoft.EntityFrameworkCore.Update.AffectedCountModificationCommandBatch.d__4.MoveNext()
--- Конец трассировки стека из предыдущего местоположения где было создано исключение --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
Task) в
Microsoft.EntityFrameworkCore.Update.AffectedCountModificationCommandBatch.d__2.MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
Task) at
Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.d__32.MoveNext()
--- Конец стека трассировка из предыдущего места, где было создано исключение --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
Task) в
Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.d__10.MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- в
System.Runtime.ExceptionServices .ExceptionDispatchInfo.Throw() в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
Task) в
Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerExecutionStrategy.d__7`2.MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в
System.Runtime.CompilerServices.TaskAwaiter. HandleNonSuccessAndDebuggerNotification(Task
Task) at
Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.d__61.MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
Task) в
Microsoft.EntityFrameworkCore.ChangeTracking.Internal .StateManager.d__59.MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
задача) at
Microsoft.EntityFrameworkCore.DbContext.d__48.MoveNext()
--- Конец трассировки стека из предыдущего места, где было исключение выброшено --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
Task) в
Abp.EntityFrameworkCore .AbpDbContext.d__49.MoveNext()
в
D:\Github\aspnetboilerplate\src\Abp.EntityFrameworkCore\EntityFrameworkCore\AbpDbContext.cs:line
214
INFO 2018-04-11 13:59:53,439 [3 ]
ore.Mvc.Internal.ControllerActionInvoker — метод выполнения действия
MyCompany.MyProject.AdditionalMasterData.Tests.TestsAppService. CreateOrEdit
(MyCompany.MyProject.Application) с аргументами ([CreateOrEditTestDto
]) — ModelState действителен WARN 2018-04-11 14:01:48,396 [4 ]
Mvc.ExceptionHandling.AbpExceptionFilter - Ожидалось, что операция базы данных
повлияет на 1 строку(и), но фактически затронула 0 строк. Данные могли быть
изменены или удалены с момента загрузки объектов. См.
http://go.microsoft.com/fwlink/?LinkId=527962 для получения информации о
понимании и обработке исключений оптимистического параллелизма.
Abp.UI.UserFriendlyException: ожидается, что это повлияет на работу базы данных 1
строк, но фактически затронуло 0 строк. Данные могли быть изменены или
удалены после загрузки объектов. См.
http://go.microsoft.com/fwlink/?LinkId=527962 для получения информации о
понимании и обработке исключений оптимистического параллелизма. в
MyCompany.MyProject.AdditionalMasterData.Tests.TestsAppService.d__7.MoveNext()
в
C:\Repo\MyProjectVenues\aspnet-core\src\MyCompany.MyProject.Application\AdditionalMasterData\ Tests\TestsAppService.cs:line
205
--- Конец трассировки стека из предыдущего места, где было создано исключение --- at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
задача) в
MyCompany.MyProject.AdditionalMasterData.Tests.TestsAppService.d__6.MoveNext()
в
C:\Repo\MyProjectVenues\aspnet-core\src\MyCompany.MyProject.Application\AdditionalMasterData\Tests\TestsAppService.cs:line
170
--- Конец трассировки стека из предыдущего места, где было исключение выброшено --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
Task) в
Microsoft.AspNetCore .Mvc.Internal.ControllerActionInvoker.d__12.MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
Task) at
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.d__10.MoveNext()
--- Конец трассировка стека из предыдущего места, где было создано исключение --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Rethrow(ActionExecutedContext
контекст) в
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.Next(State&
next, Scope& Scope, Object& state, Boolean& isCompleted) в
Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker. d__14.MoveNext()
--- Конец трассировки стека из предыдущего места, где было создано исключение --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в
System.Runtime .CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task
задача) в
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.d__23.MoveNext()
Обновление
У меня есть основная причина проблемы.
По сути, у меня есть триггер вставки в Entity2, и когда я прокомментировал запрос внутри этого триггера, он работает нормально.
Существует около 10 запросов. в этом триггере, и очень сложно понять, какой из них вызывает проблему. Не могли бы вы рассказать мне, как отладить этот триггер?
Подробнее здесь: https://stackoverflow.com/questions/497 ... ted-0-rows