【问题标题】:Tasks with new Devart backed DbContexts raise errors具有新的 Devart 支持的 DbContexts 的任务引发错误
【发布时间】:2016-05-09 14:42:48
【问题描述】:

我已经在这个问题上拉了一段时间了:

当我在多个任务中使用由 Devart DB2 提供程序支持的 DbContext 时,我会得到一个 NullReferenceException 和以下堆栈跟踪:

at Devart.Data.DB2.DB2ParameterCollection.Clear()
at Devart.Data.DB2.Entity.v.g()
at System.Data.Entity.Core.Common.DbProviderServices.CloneDbCommand(DbCommand fromDbCommand)
at System.Data.Entity.Core.Common.DbCommandDefinition.CreateCommand()
at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.PrepareEntityCommandBeforeExecution(EntityCommand entityCommand)
at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__6()
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
at System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__5()
at System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation)
at System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0()
at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)

我确实生成了几个新的上下文,但使用相同的登录名登录到一个数据库,每个方法都以Task.Factory.StartNew 开头,并且它们都开始与上述错误发生冲突。 我检查了创建的上下文,它们都得到了一个新的 id,所以我不会以任何方式重用同一个。

当我按顺序运行它们时,一个接一个,没问题。 即使我与另一个登录并行运行其他,也没问题。

以前有人见过这样的东西吗?

【问题讨论】:

    标签: entity-framework asynchronous db2 task devart


    【解决方案1】:

    这是由 Devart 的 dotConnect for DB2 中的一个错误引起的

    它已于 2016 年 2 月 11 日修复,但由于 Devart 缺乏 nuget 支持,我花了很长时间才意识到这一点:(

    https://www.devart.com/dotconnect/db2/revision_history.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-02
      • 2017-12-26
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      相关资源
      最近更新 更多