我正在使用 NHibernate 3.1。我有一个代表 System.Drawing.Image
的用户类型。在我更改图像属性的映射以启用该属性的延迟加载之前,它工作得很好。
在某个时刻,NHibernate 决定更新具有图像属性的实体。发生的情况是,在用户类型的以下方法中,value
的值不是实际的 Image
:
public void NullSafeSet(IDbCommand cmd, object value, int index)
{
...
}
显然是这种情况,因为未访问图像属性,因此未触发延迟加载机制。我在这里没有得到的是该值不是 null
但在调试器中快速观察并没有给我关于实例的任何详细信息,除了它是一个“对象”。它可能是某种类似代理的实例吗?
所以现在我正在寻找一种方法来有效地让 NHibernate 在属性未更改时避免更新属性。简单地立即从方法返回是行不通的,因为随后会抛出异常,指出属性的值丢失。
最佳答案
您应该能够通过使用 cascade="none"将属性声明为一对一(或多对一,取决于您的情况)来强制 NHibernate 避免更新属性,
而不是作为实体的“直接”属性。
关于c# - 如何处理 NHiberate 用户类型中的属性延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6917089/