0

私はNHibernateマッピングのためにこれを持っています:

    public AnswerSet_AnswerMap() {
        Table("DB.AnswerSet_Answer");
        Id(x => x.AnswerSet_AnswerId);
        References(x => x.Answer, "BaseAnswerID").LazyLoad(Laziness.NoProxy);
        References(x => x.AnswerSet, "AnswerSetID").Fetch.Join();
        Map(x => x.Format);
    }

「AnswerSet」と「Answer」の間のジャンクション テーブル用です。私たちのアプリケーションでは回答参照の .LazyLoad(Laziness.NoProxy) が必要ですが、データベースで AnswerSet_Answer オブジェクトがソフト削除されるのを防ぎます (変更されずにデータベースに残ります)。なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

0

カスケードを追加してみましたか?Cascade.DeleteAllOrphan ?

NHibernate カスケード: エンティティには他のオブジェクトへの関連付けがあります。これは、単一のアイテムへの関連付け (多対 1) またはコレクションへの関連付け (1 対多、多対多) の場合があります。いずれにせよ、NHibernate にエンティティの関連付けを自動的にトラバースし、カスケード オプションに従って動作するように指示することができます。たとえば、保存更新カスケードを使用して保存されていないエンティティをコレクションに追加すると、親オブジェクトとともに保存されます。明示的な指示は必要ありません。各カスケード オプションの意味は次のとおりです。

none - カスケードを行わず、ユーザーが自分で処理できるようにします。save-update - オブジェクトが保存/更新されるときに、関連付けをチェックし、それを必要とするオブジェクトを保存/更新します (多対多シナリオでの関連付けの保存/更新を含む)。削除 - オブジェクトが削除されると、関連付け内のすべてのオブジェクトが削除されます。delete-orphan - オブジェクトが削除されると、関連付け内のすべてのオブジェクトが削除されます。それに加えて、オブジェクトが関連付けから削除され、別のオブジェクトに関連付けられていない (孤立している) 場合は、そのオブジェクトも削除します。all - オブジェクトが保存/更新/削除されている場合、関連付けをチェックし、見つかったすべてのオブジェクトを保存/更新/削除します。all-delete-orphan - オブジェクトが保存/更新/削除されている場合、関連付けをチェックし、見つかったすべてのオブジェクトを保存/更新/削除します。それに加えて、

ただし、カスケードは orpahnd レコードを「ソフト削除」ではなく削除します。ソフト削除については、このリンクを参照してください: Soft Deletes In NHibernate

于 2012-08-16T16:38:57.263 に答える