0

我有一个非常复杂的对象图,G其中包含一个对象o1。将使用 NHibernate 写入数据库。但是,如果数据库中已经存在(我们称之为)的持久条目,我将替换为. 因此,数据库中不应该有多余的条目。现在我让 NHibernate 完成它的工作,然后我查看数据库。现在我遇到了我试图避免的情况。数据库中有原始对象加上的条目。到目前为止,我唯一的解释是可以通过另一条路线到达GGo1o1_po1o1_po1_po1o1G所以hibernate把它放到数据库中。有没有办法可以确定是否是这种情况,即我可以询问垃圾收集器有多少对o1. 或者用图形语言说:有多少条输入边o1

4

1 回答 1

1

不,你不能问垃圾收集器有多少对 o1 的引用:.NET 不使用引用计数。

基本上,您必须自己完成所有图形导航,这可能意味着让您的对象图实现某种访问者算法,并结合您已经检查过的对象缓存。是的,这类似于GC 会做的事情,但我不相信有任何方法可以连接到它的处理中。(并且可能存在涉及特殊技巧的边缘情况,其中 GC 知道某些东西不是垃圾并且无论如何都会忽略它,这不适合您的代码。)

于 2009-07-03T08:22:43.890 回答