我有两个相关的业务对象--A和B.关联是(A-> B)多对一,B.Id是A中的外键(所以A在DB中有A.B_id).
我正在使用lazy = true并且解决了我的大多数问题,但是在A的ToString中我想打印ABId,我应该没有进一步访问数据库.但是访问AB会激活代理,因为这不是在打开会话的上下文中,所以会抛出异常.
一个简单但丑陋的解决方案是拥有A.B_id属性.但这是我们首先想要避免的东西的一部分.任何"有机"的方式来做到这一点?:) 谢谢!
更新:刚刚阅读有关缓存和Session.Get与Session.Load的内容.如果对象不存在(Session.Load),那么只有新的那个抛出异常,而另一个返回一个空对象(Session.Get).在阅读了这里的缓存之后,很明显Session.Load会返回一个代理到该对象,只有在访问ID以外的属性时才会懒惰地抓取它,这非常类似于我需要的关联!现在我添加了单独的对象ID(将B_Id添加到A中,因此我可以将其作为A.B_Id访问而不是使用ABId)
我正在将图像从高FPS相机传输到内存缓冲区(列表),并且由于这些图像非常大,因此计算机的内存耗尽非常快.
我想要做的是在应用程序内存不足之前停止传输一段时间.在我的测试过程中,我发现它与"Free Physical Memory"指标一致,接近于零.
现在的问题是我找不到以编程方式获取此值的方法; 在XP中,它甚至没有显示在任何地方(仅在Vista/7任务管理器中).

我已经尝试了所有可以找到的方法(WMI,性能计数器,MemoryStatus,......),但是我从中得到的只是"可用物理内存",当然不一样.
有任何想法吗?
更新 不幸的是,我需要数据在内存中(是的,我知道我不能保证它将在物理内存中,但仍然),因为数据是实时流式传输的,我需要在内存中预览它它被存储在那里.