代码之家  ›  专栏  ›  技术社区  ›  Rabid

奇怪的nhibernate异常:工厂事件配置导致未初始化的代理传递到save()。

  •  0
  • Rabid  · 技术社区  · 15 年前

    只有一种习俗 DefaultSaveEventListener 子类 不包含过度或扩展行为 当使用以下配置XML刷新或提交事务时,足以触发此异常:

    <event type="save-update">
        <listener class="MyNamespace.MyCustomSaveEventListener, MyAssembly" />
    </event>
    

    如果我对上面的评论有意见的话,那就行了。但正如我所说,即使没有定义覆盖或扩展的事件侦听器行为,也会发生这种情况。我知道这些 <event> 元素似乎不是默认nhibernate配置的附加元素,因此在该元素中配置的任何元素都将替换其他所有元素,因此从默认实现派生的常见做法。

    异常发生在类中 NHibernate.Event.Default.DefaultSaveOrUpdateEventListener ReassociateIfUninitializedProxy 方法。即使只注册了这个侦听器,并且从工厂配置中删除了所有其他拦截/扩展,也会发生这种情况。

    有人对此有什么想法吗?我需要使用这个监听器接口实现一些扩展行为。捕获异常并将其丢弃似乎不会造成任何损坏,但返回值应该是什么?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Rabid    15 年前

    呜呜声是从 DefaultSaveEventListener 而不是 DefaultSaveOrUpdateEventListener …换了超类,问题就消失了——应该让我睁开眼睛。