c# - 如何处理 NHiberate 用户类型中的属性延迟加载

标签 c# .net nhibernate

我正在使用 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/

相关文章:

java - 如何将网站中的图表导出到 Excel?

c# - LINQ: "contains"和 Lambda 查询

c# - 使用 (Fluent-)NHibernate 持久化简单树会导致 System.InvalidCastException

.net - 在哪里下载包含 NHibernate.Caches.Prevalence.PrevalenceCacheProvider、NHibernate.Caches.Prevalence 的程序集?

c# - 防止 SQL Server 数据库中重复记录的最佳方法是什么

c# - Linq 分组 - <k,v> 我的 'V' 去哪儿了?

c# - 如何在 JSON 对象中包含 null 作为占位符?

c# - 在 C#.net 中单击用户控件中的按钮关闭子窗体并打开另一个窗体?

c# - NHibernate 演示文稿的一个很好的示例域是什么?

c# - 从 Razor View 引用动态程序集