c# - Entity Framework - 处置后的 _objectTypeCount

标签 c# asp.net entity-framework dispose

在我的网站中,我有一个 ObjectContextStorage,它将所有 ObjectContext 保存在其中。 http 请求完成后,我丢弃此存储(将其从 HttpContext.Current.Items 中删除)并在此存储中处置 ObjectContext。

现在,当我调试并查看 ObjectContext 的 _objectTypeCount 时,当我重新加载网站时,它会不断升高,而我会认为旧的 ObjectContext 已被处置?

为什么旧的ObjectContext在处理后仍然在我的内存中?

最佳答案

您正在观看 ObjectContext 类的静态变量:

private static int _objectTypeCount; // Bid counter
internal readonly int ObjectID = System.Threading.Interlocked.Increment(
                                                       ref _objectTypeCount);

我不知道这样做的目的是什么。 (它计算在应用程序或 session 生命周期内创建 ObjectContext 的频率,或者其他什么???)

但是由于它是静态,因此您无法从不断增加的计数器得出您的ObjectContext 实例尚未从内存中删除的结论。

编辑

这个计数器和代码中的ObjectID显然与所谓的BID tracing有关。 。 “BID”代表“内置诊断”。上述内部代码构造出现在许多 ADO.NET 类中。它仅用于跟踪这些类中的方法调用,并出现在如下跟踪函数中:

EntityBid.Trace("<ec.EntityCommandDefinition.CreateCommand|ADV> %d#\n",ObjectID);

_objectTypeCountObjectID 只是为类型实例提供名称(或唯一 ID)以用于跟踪输出。

除了跟踪之外,它在 ObjectContext 类内部没有任何功能意义。

关于c# - Entity Framework - 处置后的 _objectTypeCount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7068095/

相关文章:

c# - 在自定义文本框中检测 PropertyChanged

c# - 如何使用c#检查xml文件是否为空

c# - 发送邮件表单异常 : System. Runtime.InteropServices.COMException : ? ?? ?????? "SendUsing"???? ?÷?

c# - ASP.NET vNext - KVM 无法加载文件

c# - 在 Entity Framework 运行时更改数据库,而不更改连接

c# - 比较两个 LINQ 查询,其中语句 Hasvalue 与 !=null

c# - 如何填写 Google Geocoding API 返回的 TextBox

c# - Entity Framework - 从 View 创建模型?

c# - 如何将复杂类型转换为 actionresult

c# - 使用 LINQ GroupBy() 从数据库获取唯一项目的强类型列表