Проблемы с NHibernate DefaultUpdateEventListener и событиями - PullRequest
2 голосов
/ 29 января 2010

У меня проблема с DefaultUpdateEventListener в NHibernate. Я обновлю 2 объекта, а затем зафиксирую сессию.

Первый объект не попал в слушателя, а второй объект пришел туда.

Так что я проверил с отражателем, чтобы проверить, в чем проблема

Сначала NHibernate вызовет PerformSaveOrUpdate в DefeultSaveOrUpdateEventListener, там я вижу это

protected virtual object PerformSaveOrUpdate(SaveOrUpdateEvent @event)
{
    switch (this.GetEntityState(@event.Entity, @event.EntityName, @event.Entry, @event.Session))
    {
        case EntityState.Persistent:
            return this.EntityIsPersistent(@event);

        case EntityState.Detached:
            this.EntityIsDetached(@event);
            return null;
    }
    return this.EntityIsTransient(@event);
}

Разницами обоих объектов является состояние Первый объект отделен, а второй постоянный

Что делает объект постоянным или отключенным в NHibernate?

Если я знаю разницу в этом примере, надеюсь, я смогу исправить это в своем коде.

Нагрузка на оба объекта равна сессией. Загрузка

1 Ответ

1 голос
/ 05 февраля 2010

Я решил проблему с реализацией
открытого переопределения void OnSaveOrUpdate (SaveOrUpdateEvent @event)

Это событие будет выполнено раньше, чем PerformSaveOrUpdate (SaveOrUpdateEvent @event)

в этот разне имеет значения, является ли объект постоянным или отсоединенным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...