Nhibernate (или Hibernate) условное каскад
-
10-10-2019 - |
Вопрос
У меня есть пользователь класса, у которого есть мероприятие по недвижимости, которое имеет много сессий. По сути, пользователь регистрируется на мероприятии, в котором много часов сессий.
Пользователь может зарегистрироваться для события, но часы сеансов являются чисто информативными.
Но когда я пишу пользователя в базу данных с NH, он также обновляет часы сеансов. Как я могу это предотвратить, зная, что мне все еще нужны часы сеансов, которые должны были быть вставлены/обновлялись при создании/обновлении события.
Решение
Это может не полностью относиться к вашему вопросу, но у меня были проблемы, когда я хотел условно -каскадный удаление на основе определенных бизнес -правил.
Во многих случаях вы можете справиться с этим в своей логике настойчивости. У меня был случай, когда я пошел со слушателями событий 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();
}
}
}
}