C# 实体框架在一段时间后停止加载相关实体

C# 实体框架在一段时间后停止加载相关实体,c#,entity-framework,orm,C#,Entity Framework,Orm,似乎在使用相同的实体框架上下文5-40小时后,实体停止加载相关对象。字符。项为空。在此问题之前加载的所有实体都可以正常加载,并且加载正确-它发生在从数据库而不是缓存加载的实体上 我在一个游戏服务器项目中使用实体框架,在这个项目中,上下文必须在整个过程中保持活动状态,否则上下文将失去对对象的跟踪。服务器在单个线程中运行,所有与数据库相关的功能(如加载角色数据、项目、关系等)都在单独的DB线程中完成,例如:Game.DbExecute=>{…}。每当加载具有关系的实体时,所有相关数据都会加载到同一个

似乎在使用相同的实体框架上下文5-40小时后,实体停止加载相关对象。字符。项为空。在此问题之前加载的所有实体都可以正常加载,并且加载正确-它发生在从数据库而不是缓存加载的实体上

我在一个游戏服务器项目中使用实体框架,在这个项目中,上下文必须在整个过程中保持活动状态,否则上下文将失去对对象的跟踪。服务器在单个线程中运行,所有与数据库相关的功能(如加载角色数据、项目、关系等)都在单独的DB线程中完成,例如:Game.DbExecute=>{…}。每当加载具有关系的实体时,所有相关数据都会加载到同一个DB线程中,并缓存在列表或字典中,供游戏线程稍后使用。平均来说,我们从5000个实体开始,50000个非跟踪实体主要是技能信息、怪物信息、物品信息等数据。但是在运行期间,我们完全可能添加/使用50000-100000或更多实体,直到我们进行维护

访问实体时不使用DB线程的唯一时间是直接设置实体值时-例如:Character.Name=


这可能是我的问题的根源,还是问题在其他地方?还有其他人遇到过这个问题吗?

我从来没有遇到过,但上下文不是为您描述的目的而构建的。我认为调试信息很难获得,因为它需要几个小时才能发生?是的,我通常无法捕获它,因为它是如此随机-然而,我能够捕获它一次,但没有抛出错误,它只是停止加载。我将尝试将EF源添加到项目中,并逐步完成整个加载过程。您发现了什么吗?尽管进行了更多的测试,但在超过24小时的时间内没有出现错误。