1

У меня есть класс User, у которого есть свойство Event, у которого много сеансов. В принципе, пользователь регистрируется в событии, которое имеет много сеансов.nhibernate (или hibernate) Условное каскадное вычисление

Пользователь может зарегистрироваться для участия в мероприятии, но часы сессий являются чисто информативными.

Но когда я пишу пользователя в базу данных с помощью NH, он также обновляет часы сеансов. Как я могу предотвратить это, зная, что мне все еще нужны часы сеансов, которые нужно вставить/обновить при создании/обновлении события.

+0

Несколько вопросов: У пользователя есть событие как собственность? Пользователь может регистрироваться только для одного события? Сессии. Связан ли пользователь с сеансами или связан только с этим событием? – bzarah

+0

Было бы очень полезно показать нам код, который отображает ваши сущности и код, который вы вызываете, для заполнения и сохранения пользователя/событий/сеансов. – bzarah

+0

На самом деле я упростил проблему в ядре, потому что это намного сложнее, чем это , Итак, в этом примере да, у thevuser может быть только одно событие и связано только с событием, а не с сеансами. –

ответ

0

Это может быть не совсем применимо к вашему вопросу, но у меня возникли проблемы, когда я хотел условно каскадно удалить на основе определенных бизнес-правил.

Много раз, вы можете справиться с этим в своей логике настойчивости. У меня был случай, когда я пошел с слушателями Слушания NHibernate.

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(); 
       } 
      } 
     } 
    } 
+0

Спасибо за ваше предложение, я постараюсь найти время, чтобы заглянуть в него –