У меня есть приложение, использующее NHibrenate, и я использую решение на основе перехватчиков для ведения журнала / аудита.
В основном у меня есть класс, наследующий от EmptyInterceptor и переопределяющий OnFlushDirty, OnSave и OnDelete.
Все работает отлично - за исключением - когда я добавляю или удаляю из набора или списка, который сопоставлен, используя многие-ко-многим, без изменения каких-либо других свойств, ни один из методов-перехватчиков не вызывается.в NHibrenate и обнаружить эти изменения?
Класс выглядит следующим образом:
public class SomeClass
{
... properties ..
private Iesi.Collections.ISet _setOfOthers = new Iesi.Collections.HashedSet();
public virtual Iesi.Collections.ISet SetOfOthers
{
get { return _setOfOthers; }
set { _setOfOthers = value; }
}
... some more properties ...
}
С этим отображением hbm:
<class name="MyAssembly.SomeClass, MyAssembly" table="[SomeClass]">
... properties ..
<set name="SetOfOthers" table="SomeClass_SetOfOthers" cascade="none">
<key column="Owner" />
<many-to-many column="Item" class="MyAssembly.OtherClass, MyAssembly" />
</set>
.. some more properties ...
</class>
I 'Используя NHibrenate 2.0.1 (если это что-то меняет), сейчас не самое подходящее время в жизненном цикле проекта для обновления NHibrenate - но я буду обновляться, если мне абсолютно необходимо.
Спасибо.