gpt4 book ai didi

multithreading - EF 5 中的多线程

转载 作者:行者123 更新时间:2023-12-04 06:39:17 24 4
gpt4 key购买 nike

我的应用程序中有两个线程。一个线程(实际上它是一个可以被另一个系统调用的 web api。)新建一个 Context 来保存实体(调用 savechanges() 方法)。另一个线程(它是一个真正的工作线程。)新建一个上下文来计算实体(调用 count() 方法)。这两个线程在同一个实体上工作。当我的应用程序运行时,有时会抛出异常。这是它。请检查它。

System.InvalidOperationException
Stack:
at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(System.Type)
at System.Data.Entity.Internal.Linq.InternalSet`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].get_InternalContext()
at System.Data.Entity.Infrastructure.DbQuery`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].System.Linq.IQueryable.get_Provider()
at System.Linq.Queryable.Count[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Linq.IQueryable`1<System.__Canon>, System.Linq.Expressions.Expression`1<System.Func`2<System.__Canon,Boolean>>)
at Accela.HotDeploy.Website.Facade.DeployLogService.GetUpgradeProcess(System.Guid)

我相信这一定是由某些线程问题引起的。对此问题有什么想法吗?谢谢。

最佳答案

EF 不是线程安全的。您不能在多个线程中使用相同的 ObjectContext。您甚至不能同时执行读取查询。

因此您要么需要同步(使用锁),要么为不同的线程使用不同的 ObjectContexts

关于multithreading - EF 5 中的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12463048/

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