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