-1

NHibernateEnversを使用しています。すべて正常に動作しますが、envers はオーファンを削除するための監査を挿入していません。

Inverse().Cascade.AllDeleteOrphan()

nhibernate の適切な envers ドキュメントはどこにありますか? 孤児を削除するために履歴テーブルのエントリを削除することはまったく可能ですか?

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

よろしくお願いします!

4

1 に答える 1

0

ええ、答えは自分で見つけました。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/

于 2013-11-05T20:56:33.800 に答える