如何在 NHibernate 中手动覆盖属性 OnLoad 方法?

Posted

技术标签:

【中文标题】如何在 NHibernate 中手动覆盖属性 OnLoad 方法?【英文标题】:How to manually override property OnLoad method in NHibernate? 【发布时间】:2011-07-06 23:21:34 【问题描述】:

是否可以在 NHibernate 从数据库中加载实体时手动更改它。是否有一个 OnLoad 事件监听器,我们可以覆盖或继承它,这将允许我们手动设置实体。

为清楚起见,我们希望在属性为null 时分配一个自定义实体。当我们持久化到数据库时,我们成功地做了相反的事情,但是我们宁愿在 NHibernate 侦听器中实现逻辑,而不是在属性“Getter”中实现逻辑。

请注意,我们不想使用IInterceptors,因为我们使用的是最新版本的 NHibernate。

【问题讨论】:

【参考方案1】:

您可以实现IPostLoadEventListener。这只是一种方法:

void OnPostLoad(PostLoadEvent @event)

我认为这正是你想要的。

【讨论】:

NHibernate 是否足够聪明,可以知道自定义实体正在替换为 NULL,因此不会将属性标记为“Dirty”。 谢谢迭戈。通过您的回答和下面的页面,我设法找到了解决方案。 nhforge.org/wikis/howtonh/…

以上是关于如何在 NHibernate 中手动覆盖属性 OnLoad 方法?的主要内容,如果未能解决你的问题,请参考以下文章

将int列映射到nhibernate中的bool属性的问题

如何使用 DISTINCT 在 NHibernate SQL 查询中进行分页

如何在 Swift 中覆盖协议扩展的计算属性

如何告诉 Fluent NHibernate 不要映射类属性

如何使用 NHibernate 联合子类映射抽象属性?

nHibernate:如何映射可以是任何类型的属性?