小编Dar*_*nda的帖子

NHibernate - 访问关联对象的ID而不延迟加载整个对象

我有两个相关的业务对象--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)

nhibernate lazy-loading associations

7
推荐指数
2
解决办法
2072
查看次数

检测即将耗尽的内存(获取"免费物理内存"的数量)

我正在将图像从高FPS相机传输到内存缓冲区(列表),并且由于这些图像非常大,因此计算机的内存耗尽非常快.

我想要做的是在应用程序内存不足之前停止传输一段时间.在我的测试过程中,我发现它与"Free Physical Memory"指标一致,接近于零.

现在的问题是我找不到以编程方式获取此值的方法; 在XP中,它甚至没有显示在任何地方(仅在Vista/7任务管理器中).

替代文字

我已经尝试了所有可以找到的方法(WMI,性能计数器,MemoryStatus,......),但是我从中得到的只是"可用物理内存",当然不一样.

有任何想法吗?

更新 不幸的是,我需要数据在内存中(是的,我知道我不能保证它将在物理内存中,但仍然),因为数据是实时流式传输的,我需要在内存中预览它它被存储在那里.

c# memory memory-management

6
推荐指数
2
解决办法
4221
查看次数