如何在 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 方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 DISTINCT 在 NHibernate SQL 查询中进行分页