4

NHibernateが特定のクラスの単一のエンティティを削除しないようにするにはどうすればよいですか?私が現在使用しているプログラム的な方法では、エンティティの一意のフィールド「名前」をチェックする必要があります。

シナリオは次のとおりです。私には人とグループがいます。グループには、人や他のグループを含めることができます。「Admins」という名前のグループを削除しようとしても、トランザクションレベルの制約があるため、削除されません(具体的には、グループの「名前」列/フィールドをチェックします。これは一意です)。だからそれは大丈夫です。

しかし今、別のグループが作成され、「管理者」がそのサブグループになると、チェックは失敗すると思います。これは、「管理者」の削除を意味します。だから私は、例えばNHibernateを使用して、親/子の封じ込めツリーをトラバースする以外の、より良い方法を探しています

'class Mutable = false'などのクラス全体の制限を使用することはできません。つまり、特定のクラスの1つまたは2つの個別のエンティティに読み取り専用の制限があります。

よろしく、

_NT

4

1 に答える 1

3

IPreDeleteEventListener の独自の実装を記述し、nhibernate のイベント システムにフックして、プログラムでエンティティを停止し、削除することができます。

これはリスナーの使用例です。

于 2009-10-01T15:04:23.550 に答える