従来のOracleDBを使用して開発しているアプリケーションでFluentNHibernate(かなり新しい)を使用しています。DBには、外部キーとデータベースで生成された列で構成される複合キーがあります。生成された列は、テーブル名と他の外部キー部分の1つを使用してDB関数を呼び出すことによって提供されます。生成された複合キーパーツは一意ではないため、これを変更することはできません。生成されたキー部分は、他のテーブルでも外部キーとして使用されることがよくあります。
データベース内にあるように複合キーを指定するエンティティマッピングを作成すると、作業単位を壊すID生成戦略を使用できなくなります。
生成された列のみを主キーとして指定するエンティティマッピングを作成すると、trigger-identityを使用してIDを生成でき、作業単位を取得できますが、更新したり、子コレクション:キーの他の部分はWHEREステートメントに含まれていません。
誰かが私にどのように進めるかについてアドバイスを与えることができますか?
- 複合キーのマッピングに固執する場合、トリガーIDを使用するSQLを出力するようにnhibernateを拡張できますか?もしそうなら、あなたは出発点を提案できますか?
- 単一の列キーをマップする場合、HasManyマッピングおよび更新のWHERE句に他のプロパティを含めることはできますか?