Envers, не вставляя удаления в таблицы истории для удаленных удалений

Мы используем NHibernate и Envers. Все работает нормально, но envers не вставляет ревизии для удаления сирот.

Inverse().Cascade.AllDeleteOrphan()

Где я могу найти хорошую документацию envers для nhibernate? Можно ли вообще так, чтобы evers делал удаление записей в таблицах истории для удаления сироты?

...
entity.SomeCollection.Clear(); //Orphans will be deleted because cascade is AllDeleteOrphan.
tx.commit();

С наилучшими пожеланиями!

1 ответ

Да, нашел ответ сам. Envers делает вставки для удаленных удалений:

ISession session = sessionFactory.OpenSession();
ITransaction tx = session.BeginTransaction();

MyItem item = session.Get<MyItem>(44); //Item enthält ein Tag.

item.Tags.Clear();

tx.Commit(); 

session.Close();

Но только если конец отношения не объявлен обратным.

    HasManyToMany(x => x.Items)
        .Table("MyItem_MyTag")
        .ParentKeyColumn("MyTagID")
        .ChildKeyColumn("MyItemID")
        .Cascade.All()
        .Inverse().LazyLoad();

Если вы хотите ввести запись не менее, то добавьте:

nhibernate.envers.revision_on_collection_change

http://envers.bitbucket.org/

Другие вопросы по тегам