1

我有一个类的用户,它有一个属性事件,其中有许多会话。基本上,用户注册一个有多个会话小时的事件。nhibernate(或休眠)有条件级联

用户可以注册一个事件,但会话时间是纯粹的信息。

但是,当我使用NH将数据写入数据库时​​,它也会更新会话时间。如何知道在创建/更新事件时仍需要插入/更新会话时间,才能防止这种情况发生。

+0

有几个问题: 用户有事件作为属性?用户只能注册一个事件?会话 - 用户是否与会话相关联,或只与该事件相关联? – bzarah 2011-01-13 17:49:46

+0

向我们展示映射您的实体和您调用的代码以填充和保存用户/事件/会话的代码也非常有帮助 – bzarah 2011-01-13 18:00:00

回答

0

这可能不完全适用于您的问题,但我有问题想根据特定业务规则有条件地级联删除。

很多时候,你可以在你的持久性逻辑中处理这个问题。我遇到了一个与NHibernate Event Listeners一起使用的案例。

public class ConditionalDeleter: IPostDeleteEventListener 
    { 
     public void OnPostDelete(PostDeleteEvent @event) 
     { 
      var foo = @event.Entity as Foo; 
      if (foo != null) 
      { 
       if (foo.ShouldDeleteBar) 
       { 
        ISession session = @event.Session.GetSession(EntityMode.Poco); 
        session.Delete(foo.Bar); 

        session.Flush(); 
       } 
      } 
     } 
    }