gpt4 book ai didi

entity-framework - ADO.Net Entity Framework 线程在读取数据时中止异常

转载 作者:行者123 更新时间:2023-12-05 00:23:15 26 4
gpt4 key购买 nike

我在使用 ADO.Net Entity 框架读取数据时遇到了一个奇怪的问题。

我有两个表,“Surveys”和“PatientVists”。 “VisitId”是“PatientVists”中的主键,它是“surveys”表中的外键。

我正在使用以下查询:

foreach (var survey in db.Surveys.Include(p => p.PatientVisit).Where(p => p.FacilityId == f.Id && p.IsCompleted == true && p.IsImaged == false).OrderBy(p => p.PatientVisit.MrnId).ThenBy(p => p.DateUpdated).ToList())

{
// reminign code
}

上面的查询看起来很正常。但是在执行查询时,我收到线程中止异常。我可以理解是否因为数据量大而导致超时异常。但我不确定为什么会出现线程中止异常。我没有明确地产生一个线程。此代码片段位于网络服务中,但我相信它与此无关。

以下是堆栈跟踪:
System.Threading.ThreadAbortException: Thread was being aborted.
at SNIReadSyncOverAsync(SNI_ConnWrapper* , SNI_Packet** , Int32 )
at SNINativeMethodWrapper.SNIReadSyncOverAsync(SafeHandle pConn, IntPtr& packet, Int32 timeout)
at System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync()
at System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket()
at System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer()
at System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
at System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

它是rebelected“polist”运算符或“包括”运算符产生一个线程?我应该用Join代替它吗?一般来说,从性能角度来看,哪种方法是首选方法?

请让我知道是否有人对特定的异常(exception)情况有所了解

谢谢

最佳答案

我认为这是为正在超时的 Web 应用程序/服务提供服务的基本线程。如果您在自己的线程上生成进程,它应该可以解决问题。

您还可以尝试此处发布的解决方法:
https://sharepoint.stackexchange.com/questions/9380/thread-was-being-aborted-with-sharepoint-2010

将以下代码添加到 Web.Config:

< system.web >
< httpRuntime executionTimeout="36000" />
< / system.web >

在我更改代码以在其自己的线程中运行之前,它作为临时解决方案对我有用!

关于entity-framework - ADO.Net Entity Framework 线程在读取数据时中止异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28503325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com