我对400记录数据库有一个非常简单的查询,但是,如果我在多线程环境中进行查询,它会立即超时,如果我逐个查询它,它可以正常工作。
我没有对连接字符串做任何特殊操作,SQL服务器在本地运行。
每个线程都创建自己的上下文,并在using
块中进行查询。
第一次超时大约需要15秒,然后会立即跟踪查询超时。
我试图在CommandTimeout上更改超时但是没有工作,并且即时超时看起来很可疑,我认为将其进一步挖掘是好的。
查询只是按entity.Id匹配。它似乎与查询本身无关,因为我多次更改查询以执行不同的操作。
例外说
10/10/2011 3:52:16 T026 D异常 - 基础提供程序在Open上失败。
10/10/2011 3:52:16 T026 D内部异常消息 - 超时已过期。操作完成之前经过的超时时间或服务器没有响应。
10/10/2011 3:52:16 T026 D at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition,DbConnection storeConnectionToOpen,DbConnection originalConnection,String exceptionCode,String attemptsOperation,Boolean& closeStoreConnectionOnFailure) 在System.Data.EntityClient.EntityConnection.Open() 在System.Data.Objects.ObjectContext.EnsureConnection() 在System.Data.Objects.ObjectQuery
1.GetResults(Nullable
1 forMergeOption) 在System.Data.Objects.ObjectQuery1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable
1源) 在System.Data.Objects.ELinq.ObjectQueryProvider.b__2 [TResult](IEnumerable1 sequence) at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable
1查询,表达式queryRoot) at System.Data.Objects.CompiledQuery.ExecuteQuery [TResult](ObjectContext context,Object [] parameterValues) 在System.Data.Objects.CompiledQuery.Invoke [TArg0,TArg1,TResult](TArg0 arg0,TArg1 arg1)
是否有任何身体经历过相同或知道答案为什么是即时超时?
提前致谢。