我正在使用NHibernate 3.1。我有一个代表System.Drawing.Image
的用户类型。它完全正常,直到我更改图像属性的映射以启用属性的延迟加载。
在某个时刻,NHibernate决定更新具有image属性的实体。会发生的情况是,在以下用户类型的方法中,value
的值不是实际的Image
:
public void NullSafeSet(IDbCommand cmd, object value, int index)
{
...
}
显然是这种情况,因为没有访问图像属性,因此没有触发延迟加载机制。我没有得到的是,该值不是null
,但调试器中的快速监视并没有提供有关该实例的任何详细信息,除了它是一个“对象”。它可能是某种代理实例吗?
所以现在我正在寻找一种方法来有效地让NHibernate在没有改变时不要更新属性。简单地从方法立即返回不起作用,因为然后抛出异常,声明该属性的值丢失。
答案 0 :(得分:1)
您应该能够强制NHibernate通过使用cascade="none",
将属性声明为一对一(或多对一,具体取决于您的方案)来避免更新属性,而不是实体的“直接”财产。