简体   繁体   English

实体框架更新大表失败 - 异常:等待操作超时

[英]Entity Framework update on large table failing - Exception: The wait operation timed out

Entity Framework 6.1.3 update on a large table is failing in the production environment实体框架 6.1.3 更新大表在生产环境中失败

Exception:例外:

The wait operation timed out等待操作超时

I have an Issue table with nearly 8000000 records.我有一个包含近 8000000 条记录的Issue表。 While inserting records, the exception occurs插入记录时出现异常

The wait operation timed out等待操作超时

While inserting record we do some background tasks in on SQL transaction.在插入记录时,我们在 SQL 事务中执行一些后台任务。

  1. Insert values in the Notification table (to send a notification to the user).Notification表中插入值(向用户发送通知)。
  2. Insert values in the Change table.Change表中插入值。 The Change table keeps the history changed value, old value, new value, etc. And I think this transaction causes the timeout exception. Change表保留了历史更改值、旧值、新值等。我认为这个事务会导致超时异常。 Need some inputs需要一些输入
-- statement #1
begin transaction with isolation level: ReadCommitted

-- statement #2
UPDATE [dbo].[Issues]
SET [CategoryID] = @0, [SubcategoryID] = @1, [HandlerID] = @2, [Modified] = @3, [RegionID] = @4, [TeamID] = @5, [Closed] = @6, [Address] = @7, [AddressDetails] = @8, [Description] = @9, [Location] = @10, [Status] = @11, [Visibility] = @12, [ReportedBy_Address] = @13, [ReportedBy_EmailAddress] = @14, [ReportedBy_Name] = @15, [ReportedBy_PhoneNumber] = @16, [ForwardedMessage] = @17, [IsUrgent] = @18, [IsNewlyAssigned] = @19, [CategoryField] = @20, [IntegrationFault] = @21
WHERE ([ID] = @22)

-- statement #3
INSERT [dbo].[ChangeSets]([Created], [ApplicationID], [UserID])
VALUES (@0, @1, NULL)
SELECT [ID]
FROM [dbo].[ChangeSets]
WHERE @@ROWCOUNT > 0 AND [ID] = scope_identity()

-- statement #4
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #5
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #6
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #7
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #8
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #9
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #10
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #11
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #12
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #13
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #14
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #15
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #16
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #17
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #18
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #19
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #20
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #21
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Changes]([ChangeSetID], [EntityID], [Name], [Type], [PreviousValue], [NewValue])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, @1, @2, @3, @4, @5)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Changes] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #22
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Notifications]([Created], [CreatedByID], [Modified], [ModifiedByID], [UserID], [Person_Address], [Person_EmailAddress], [Person_Name], [Person_PhoneNumber], [Type], [IssueID], [CommentID], [AttachmentID], [RegionID], [OrganizationID], [IsHidden], [IsRead])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, NULL, NULL, NULL, @1, NULL, NULL, NULL, NULL, @2, @3, NULL, NULL, @4, @5, @6, @7)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Notifications] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #23
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Notifications]([Created], [CreatedByID], [Modified], [ModifiedByID], [UserID], [Person_Address], [Person_EmailAddress], [Person_Name], [Person_PhoneNumber], [Type], [IssueID], [CommentID], [AttachmentID], [RegionID], [OrganizationID], [IsHidden], [IsRead])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, NULL, NULL, NULL, NULL, NULL, @1, @2, NULL, @3, @4, NULL, NULL, @5, @6, @7, @8)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Notifications] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #24
DECLARE @generated_keys table([ID] uniqueidentifier)
INSERT [dbo].[Notifications]([Created], [CreatedByID], [Modified], [ModifiedByID], [UserID], [Person_Address], [Person_EmailAddress], [Person_Name], [Person_PhoneNumber], [Type], [IssueID], [CommentID], [AttachmentID], [RegionID], [OrganizationID], [IsHidden], [IsRead])
OUTPUT inserted.[ID] INTO @generated_keys
VALUES (@0, NULL, NULL, NULL, NULL, @1, @2, @3, @4, @5, @6, NULL, NULL, @7, @8, @9, @10)
SELECT t.[ID]
FROM @generated_keys AS g JOIN [dbo].[Notifications] AS t ON g.[ID] = t.[ID]
WHERE @@ROWCOUNT > 0

-- statement #25
commit transaction

Exception例外

Error: System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries.错误:System.Data.Entity.Infrastructure.DbUpdateException:更新条目时出错。 See the inner exception for details.有关详细信息,请参阅内部异常。 ---> System.Data.Entity.Core.UpdateException: An error occurred while updating the entries. ---> System.Data.Entity.Core.UpdateException:更新条目时出错。 See the inner exception for details.有关详细信息,请参阅内部异常。 ---> System.Data.SqlClient.SqlException: Execution Timeout Expired. ---> System.Data.SqlClient.SqlException: 执行超时已过期。 The timeout period elapsed prior to completion of the operation or the server is not responding.操作完成前超时时间已过或服务器未响应。 ---> System.ComponentModel.Win32Exception: The wait operation timed out --- End of inner exception stack trace --- at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.SqlCommand.InternalEndExecuteNonQuery(IAsyncResult asyncResult, String endMethod, Boolean isInternal) at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryInternal(IAsyncResult asyncResult) at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryAsync(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 endFunction, Action 1 endAction, Task 1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Mapping.Update.Internal.DynamicUpdateCommand.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.d__0.MoveNext() --- End of inner exception stack trace --- at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Objects.ObjectContext.d__3d ---> System.ComponentModel.Win32Exception: 等待操作超时 --- 内部异常堆栈跟踪结束 --- 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.SqlCommand.InternalEndExecuteNonQuery(IAsyncResult asyncResult, String endMethod, Boolean isInternal) at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryInternal(IAsyncResult asyncResult) at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryAsync(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 endFunction, Action 1 endAction, Task 1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Mapping.Update.Internal.DynamicUpdateCommand.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.d__0.MoveNext() --- End of inner exception stack trace --- at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Objects.ObjectContext.d__3d 1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Mapping.Update.Internal.DynamicUpdateCommand.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.d__0.MoveNext() --- End of inner exception stack trace --- at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Objects.ObjectContext.d__3d 1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runt 1 promise, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Mapping.Update.Internal.DynamicUpdateCommand.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.d__0.MoveNext() --- End of inner exception stack trace --- at System.Data.Entity.Core.Mapping.Update.Internal.UpdateTranslator.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Objects.ObjectContext.d__3d 1.MoveNext() --- 从上一个抛出异常的位置开始的堆栈跟踪结束---在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runt ime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Objects.ObjectContext.d__39.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.d__9 1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Objects.ObjectContext.d__31.MoveNext() --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.Data.FixiContext.d__80.MoveNext() in E:\\_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\FixiContext.cs:line 200 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Decos.Fixi.Data.FixiContext.d__80.MoveNext() in E:\\_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\FixiContext.cs:line 207 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.Data.Services.ServiceBase ime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Objects.ObjectContext.d__39.MoveNext() --- 从上一个抛出异常的位置结束堆栈跟踪---在 System.Runtime .ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.d__9 1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Objects.ObjectContext.d__31.MoveNext() --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.Data.FixiContext.d__80.MoveNext() in E:\\_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\FixiContext.cs:line 200 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Decos.Fixi.Data.FixiContext.d__80.MoveNext() in E:\\_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\FixiContext.cs:line 207 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.Data.Services.ServiceBase 1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Objects.ObjectContext.d__31.MoveNext() --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.Data.FixiContext.d__80.MoveNext() in E:\\_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\FixiContext.cs:line 200 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Decos.Fixi.Data.FixiContext.d__80.MoveNext() in E:\\_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\FixiContext.cs:line 207 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.Data.Services.ServiceBase 2.d__15.MoveNext() in E:_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\Services\\ServiceBase.cs:line 181 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerN 1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Data.Entity.Core.Objects.ObjectContext.d__31.MoveNext() --- End of inner exception stack trace --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.Data.FixiContext.d__80.MoveNext() in E:\\_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\FixiContext.cs:line 200 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at Decos.Fixi.Data.FixiContext.d__80.MoveNext() in E:\\_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\FixiContext.cs:line 207 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.Data.Services.ServiceBase 2.d__15.MoveNext() in E:_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data \\Services\\ServiceBase.cs:line 181 --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerN otification(Task task) at Decos.Fixi.Data.Services.IssueService.d__19.MoveNext() in E:_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\Services\\IssueService.cs:line 277 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.WebApi.Controllers.IssuesController.d__20.MoveNext() in E:_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.WebApi\\Controllers\\IssuesController.cs:line 593 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Threading.Tasks.TaskHelpersExtensions.d__3`1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServi在 E:_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.Data\\Services\\IssueService 中的 Decos.Fixi.Data.Services.IssueService.d__19.MoveNext() 中的通知(任务任务)。 cs:line 277 --- 从前一个抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos。 Fixi.WebApi.Controllers.IssuesController.d__20.MoveNext() in E:_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.WebApi\\Controllers\\IssuesController.cs:line 593 --- 结束来自先前抛出异常的位置的堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 System.Threading.Tasks.TaskHelpersExtensions.d__3` 1.MoveNext() --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServi ces.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilter ces.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() --- 从上一个异常位置的堆栈跟踪结束抛出 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- End来自上一个抛出异常的位置的堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- 上一个堆栈跟踪的结束抛出异常的位置 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 System.Web.Http.Filters.ActionFilter Attribute.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.R Attribute.d__0.MoveNext() --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)在 System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- 在 System.Web 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 从上一个抛出异常的位置结束堆栈跟踪。 Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (任务任务)在 System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext() --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 处系统R untime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() --- End of stack trace from untime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- 从上一个抛出异常的位置开始的堆栈跟踪结束---在 System.Runtime.ExceptionServices .ExceptionDispatchInfo.Throw() 在 System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext() --- 从上一个抛出异常的位置的堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw( ) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext() --- 从上一个抛出异常的位置开始的堆栈跟踪结束 --- 在 System .Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() --- 堆栈跟踪结束 previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.WebApi.Annotations.AuthenticateApplicationAttribute.d__8.MoveNext() in E:_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.WebApi\\Annotations\\ApplicationAuthenticationAttribute.cs:line 108 --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Web.Http.Controllers.AuthenticationFilterResult.d__0.MoveNext() --- End of stack trace from previous location where ex之前抛出异常的位置 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext( ) --- 从上一个抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Decos.Fixi.WebApi .Annotations.AuthenticateApplicationAttribute.d__8.MoveNext() in E:_work4\\10\\s\\Fixi2\\Main\\Decos.Fixi.Api\\Decos.Fixi.WebApi\\Annotations\\ApplicationAuthenticationAttribute.cs:line 108 --- 堆栈跟踪结束从上一个抛出异常的位置 --- 在 System.Web.Http.Controllers.AuthenticationFilterResult.d__0.MoveNext() 上的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() --- 上一个位置的堆栈跟踪结束,其中 ex ception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ExceptionFilterResult.d__0.MoveNext() ception 被抛出 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 System.Web.Http.Controllers.ExceptionFilterResult.d__0.MoveNext()

Not sure what version of EF you're using, but regardless you need to set the command timeout.不确定您使用的是什么版本的 EF,但不管您是否需要设置命令超时。 It defaults to 30 seconds so that won't work for you.它默认为 30 秒,因此对您不起作用。

In EF 6, it was set like this: this.context.Database.CommandTimeout = 0;在 EF 6 中,它是这样设置的: this.context.Database.CommandTimeout = 0; EF 5, something like this: ((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 0; EF 5,类似这样: ((IObjectContextAdapter)this.context).ObjectContext.CommandTimeout = 0; In EF core: this.context.Database.SetCommandTimeout(0);在 EF 核心中: this.context.Database.SetCommandTimeout(0);

The value is in seconds.该值以秒为单位。 If you set the value to 0, it's "unlimited".如果将该值设置为 0,则为“无限制”。 I'd say that's what you need.我会说这就是你所需要的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM