Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架-\处理后的objectTypeCount_C#_Asp.net_Entity Framework_Dispose - Fatal编程技术网

C# 实体框架-\处理后的objectTypeCount

C# 实体框架-\处理后的objectTypeCount,c#,asp.net,entity-framework,dispose,C#,Asp.net,Entity Framework,Dispose,在我的网站中,我有一个ObjectContextStorage,它将所有ObjectContext保存在其中。http请求完成后,我丢弃此存储,将其从HttpContext.Current.Items中删除,并在此存储中处置ObjectContext 现在,当我调试并查看我的ObjectContext的_objectTypeCount时,当我重新加载我的网站时,它会不断增加,而我会认为旧的ObjectContext被处理掉了 为什么旧的ObjectContext在处理后仍在我的内存中?您正在查看

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

现在,当我调试并查看我的ObjectContext的_objectTypeCount时,当我重新加载我的网站时,它会不断增加,而我会认为旧的ObjectContext被处理掉了

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

您正在查看ObjectContext类的一个静态变量:

我不知道这是为了什么。它统计在应用程序或会话生存期或其他时间段内创建ObjectContext的频率

但是,因为它是静态的,所以您不能从不断增加的计数器得出结论,您的ObjectContext实例没有从内存中删除

编辑

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

EntityBid.Trace("<ec.EntityCommandDefinition.CreateCommand|ADV> %d#\n",ObjectID);
_objectTypeCount和ObjectID只是为类型的实例提供一个名称或唯一ID以跟踪输出


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

感谢您的回复,并对最近的评论表示抱歉。有没有其他方法可以查看ObjectContext当前在内存中的实例数?@Julian:不幸的是,我不知道。我认为ObjectContext在这方面并不特别。这可能归结为一个问题:如何检查对象是否仍在内存中或已被垃圾收集?或者别的什么。。。我对.NET系统基础设施的了解不足以回答这个问题。这将是一个有趣的新问题:
EntityBid.Trace("<ec.EntityCommandDefinition.CreateCommand|ADV> %d#\n",ObjectID);