关于NHibernate听众的问题

关于NHibernate听众的问题,nhibernate,Nhibernate,我在网上找到了一些关于NHb侦听器的信息,如以下文档: ,但仅仅了解它们是如何工作的还远远不够。这是关于我无法找到以下问题的答案的问题: 1) 当我们调用Session.Save(entity)时,它真的运行了吗?我的意思是当数据库上没有运行SQL更新脚本时,对entity没有做任何更改?如果有,是否有任何Nhb事件/侦听器跟踪实际的数据库更新,并且update语句仅在db上运行?我们的实体配置了DynamicUpdate(),如果有任何区别的话 2) 如果我们有单独的嵌套实体,如[Name](

我在网上找到了一些关于NHb侦听器的信息,如以下文档: ,但仅仅了解它们是如何工作的还远远不够。这是关于我无法找到以下问题的答案的问题:

1) 当我们调用
Session.Save(entity)
时,它真的运行了吗?我的意思是当数据库上没有运行SQL更新脚本时,对entity没有做任何更改?如果有,是否有任何Nhb事件/侦听器跟踪实际的数据库更新,并且
update
语句仅在db上运行?我们的实体配置了
DynamicUpdate()
,如果有任何区别的话

2) 如果我们有单独的嵌套实体,如[Name](不是组件,存储在单独的表中)或实体列表,我们的实体(如[Person])引用了这些实体,该怎么办。现在我们更新人名,而不对[person]实体属性进行任何更改。如果我们运行
Session.Save(Person)
,是否会为[Person]调用
PostUpdateEventListener
,或者只为[Name]运行一次


也许有人可以给我一个链接,链接到一个描述清晰的在线文档,详细地解释听众,并回答类似的问题。谢谢

我在实践中发现了这一点,为了子孙后代,以下是答案:

1) 只要不对数据库进行实际更改,即使显式运行
Flush
,PostUpdateEventListener也不会真正运行

2)
PostUpdateEventListener
仅为
[Name]
运行,以防它是一个实体。如果
[Name]
是一个组件,那么PostUpdateEventListener显然会为@event.Entity为[Person]运行