我有一个非常基本的 EF 模型,其中包含订单和订单行项目。在进行最终保存的过程中,我实际上将带有行项目的订单写入数据库,我在添加来自会话变量的订单项目之前调用 Order.OrderItems.Clear()。在大多数情况下,此代码工作正常。但是时不时地,我会收到一封错误电子邮件(错误被捕获并发送给我),其中包含以下堆栈跟踪:
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection. at System.Data.Objects.ObjectContext.EnsureConnection()
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.Execute(MergeOption mergeOption)
at System.Data.Objects.DataClasses.EntityCollection`1.Load(List`1 collection, MergeOption mergeOption)
at System.Data.Objects.DataClasses.EntityCollection`1.Load(MergeOption mergeOption)
at System.Data.Objects.DataClasses.RelatedEnd.Load()
at System.Data.Objects.DataClasses.RelatedEnd.DeferredLoad()
at System.Data.Objects.DataClasses.EntityCollection`1.Clear()
at UserRegistration.Models.SaveRepository.SaveOrder(Order order)
我了解对象上下文以及为什么要处理它(我已经在我的 EF 模型上禁用了延迟加载,希望将来能防止这种情况发生)但是为什么 EF 在清除后会进行加载?