2011-02-27 14 views
1

NHibernateがエンティティのIDが-1の場合、データベースにNULLを割り当てる(永続化する)という単純なルールを実装したいと考えています。たとえば、データベースにNULLとして永続化する必要のある「システム内」のアカウントがあります。NHibernateの書き込み値= IDが0未満の場合NULL

IDをデータベースに永続化しようとすると、IDが外部表に存在しないため、外部キー例外が発生します。

私たちはFluentNhibernateでNHibernateを使用しています。

答えて

1

あなたはあなたのエンティティの適切なマッピングをしていないと思います。それが正しい場合は、IDを表示する必要はありませんが、別のエンティティへの参照である必要があります。この場合、参照はnull値で保持されます。間違った場合でも、このIDがnullの場合はID(これはほとんど常に間違っています)で表現された参照を持つエンティティをマップしたい場合は、intを持つようにnullableとしてマップしますか?あなたは-1トリックの代わりにヌルを意味するためにnullを適合させることができます。

カスタムエンティティが内部的にNULL値として使用されている場合は、セッションのインターセプタが助けることができるコメント

を参照してください:のOnSaveに取り組んでnullをダミーエンティティを置き換えることにより、特殊なケースを扱います。 NHインターセプタについては Here you can find the documentationです。 同じ文書の11.2版には、イベントに関連する部分があります。この種の問題に相当する部分です。

+0

ありがとうFelice。私は明確にする必要があります。 ID自体ではなく、オブジェクトへの参照を保持しています。 ID = -1の内部オブジェクトをアプリケーション内に作成します。このエンティティがプロパティに割り当てられている場合、データベースに保持されているプロパティ値はNULLである必要があります。 – Wozart

+0

Ok、ありがとう、私は返信を延長します。 –

+0

ありがとうございます。私は、インターセプタがNHibernateの最新バージョンのイベントに置き換えられたと読んでいます。 OnLoadとOnSaveのために作成するイベントリスナーは何ですか? – Wozart

関連する問題