asp.net – 实体框架“等待操作超时”就简单的DeleteAll
我们有一个我继承的MVC Web应用程序加载,让我们称之为MyCategory及其所有子项为webform,进行编辑,然后保存点击保存.应用程序的工作方式是首先删除模型中父级实体的所有数据,然后重新添加所有内容.我们的并发用户数非常低,每个露水时间最多不超过20人.我们无法在本地重现此错误,但当离岸团队开始工作时,我们已经开始看到了
出现错误.在父表上从LINQ调用删除时会发生这种情况(此时它没有数据,子表也没有).这是间歇性的,但在过去一周发生了很多次,其中该项目的这部分工作有所增加. 从Stack Trace看,它看起来在System.Data.SqlClient.SqlCommand.FinishExecuteReader失败了,这似乎是109分钟.这应该是从表中删除最多tqo记录,并且从该表加载数据的任何人应该在很短的时间内检索最多两个. 任何关于从哪里开始的想法将不胜感激.不幸的是,我没有权限在生产数据库上运行SQL查询分析器或活动监视器. 调用堆栈是: [SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated.] System.Data.SqlClient.SqlConnection.OnError(SqlException exception,Boolean breakConnection,Action`1 wrapCloseInAction) +388 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose) +717 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean& dataReady) +4515 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString) +6557561 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,Boolean returnStream,Boolean async,Int32 timeout,Task& task,Boolean asyncWrite,SqlDataReader ds) +6560327 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,String method,TaskCompletionSource`1 completion,Boolean asyncWrite) +586 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion,String methodName,Boolean sendToPipe,Boolean asyncWrite) +742 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +287 System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query,QueryInfo queryInfo,IObjectReaderFactory factory,Object[] parentArgs,Object[] userArgs,ICompiledSubQuery[] subQueries,Object lastResult) +789 System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query,QueryInfo[] queryInfos,Object[] userArguments,ICompiledSubQuery[] subQueries) +188 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +500 System.Data.Linq.StandardChangeDirector.DynamicDelete(TrackedObject item) +71 System.Data.Linq.StandardChangeDirector.Delete(TrackedObject item) +258 System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) +622 System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) +932 WebAppData.MyCategory.MyCategoryData.DeleteAll(Int32 id,Guid gid) +1053 WebAppServices.MyCategory.MyCategoryService.DeleteMyCategoryParentItems(Int32 id,Guid gId) +1632 WebAppServices.MyCategory.MyCategoryService.UpdateMyCategory(Int32 id,Guid gId,MyCategoryEntity mce) +51 WebAppUI.Areas.Documents.Categories.Sections.MyCategory.MyCategoryController.Save(Int32 Id,MyCategoryModel model) +93 编辑: 连接字符串: <add name="Data" connectionString="Data Source=myserver;Initial Catalog=mydatabase;User ID=myuser;Password=mypassword /> 解决方法
这是您的问题的一个临时解决方案.您可以增加超时,如下所示.但是您必须找出导致此问题的EF查询,并且需要提高它的性能.
注意:这里的时间是秒 public DbContext() : base("Default") { this.Database.CommandTimeout = 60; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net – 在控制器中查看列表数据
- asp微信支付代码证书文件post_url.aspx和post_url.aspx.cs源
- asp.net core中使用log4net
- asp.net – Sitecore:按字段选择项目:TreelistEx
- ASP.NET MVC错误处理 – 删除aspxerrorpath
- 在iis6.0中更改asp.net版本
- asp.net – 安装MS Web Deploy 3.0 – 无法启动WMService
- kendo-ui – Kendo DropDownList – 在optionLabel添加类
- asp.net-mvc – 如何使用具有可空类型的强类型HTML帮助程序
- 初探CSRF在ASP.NET Core中的处理方式