NHibernate: значение возвращаемого значения перехватчиков - PullRequest
7 голосов
/ 13 мая 2009

Я думаю, что это простой вопрос, но мой поиск по нему слабый.

У меня была проблема, описанная в следующей ссылке в отношении сгенерированного идентификатора и каскадирования:

https://www.hibernate.org/hib_docs/nhibernate/html/example-parentchild.html (внизу)

Я исправил это, используя предложенный метод Перехватчика. Кажется, все работает, и я счастлив.

Тем не менее, я понятия не имею, каково значение возвращаемого значения от таких методов, как:

    public override bool OnLoad(object entity, object id, object[] state, string[] propertyNames, IType[] types)
    {
        if (entity is Persistent) ((Persistent)entity).OnLoad();
        return false;
    }

    public override bool OnSave(object entity, object id, object[] state, string[] propertyNames, IType[] types)
    {
        if (entity is Persistent) ((Persistent)entity).OnSave();
        return false;
    }

В обоих случаях возвращается false.

Когда я гуглю о перехватчиках NHibernate, я вижу множество примеров того, как их написать. Некоторые вместо этого возвращают true (http://www.lostechies.com/blogs/rhouston/archive/2008/03/27/creating-a-timestamp-interceptor-in-nhibernate.aspx). Я не знаю, в чем здесь разница. Мой код работает, но перехватчики кажутся мне полезными, поэтому я хотел бы иметь лучшее понимание.

Ответы [ 2 ]

5 голосов
/ 13 мая 2009

Я считаю, что возвращаемое значение должно указывать, был ли параметр состояния изменен в методе перехватчика. Вы правы - на данный момент это сложно для Google - сайт NHibernate недавно переехал, и Google, похоже, не находит столько полезной информации, как раньше.

0 голосов
/ 13 мая 2009

Хьюи,

Прочтите этот пост, я не программист .net, но этот пост очень полезен:

http://knol.google.com/k/fabio-maulo/nhibernate-chapter-11/1nr4enxv3dpeq/14#

Глава 11. Перехватчики и события Это часто полезно для приложения реагировать на определенные события, которые происходят внутри NHibernate. Это позволяет реализация определенных видов общая функциональность и расширение функциональности NHibernate.

11,1. Перехватчики Интерфейс IInterceptor обеспечивает обратные вызовы от сеанс к приложению, позволяющему приложение для проверки и / или манипулировать свойствами постоянного объект, прежде чем он будет сохранен, обновлен, удален или загружен. Одно возможное использование для этого стоит отслеживать ревизию Информация. Например, следующий II-рецептор автоматически устанавливает createTimestamp, когда IAuditable создан и обновляет свойство lastUpdateTimestamp, когда IAuditable обновлен.

Надеюсь, что это вас еще немного осветит.

...