1

Staff と e SecuredPage エンティティがあり、プロパティは以下のとおりです

スタッフ

id Name LastName Level // SecuredPage.RoleId

保護されたページ

id PageId RoleId // Staff.Level

Staff エンティティに SecuredPage のコレクションを持ちたいので、1 対多ですが、マッピングでそれを処理する方法がわかりませんでした。

Staff.hbm.xml

<bag name="SecuredPages"  lazy="true" inverse="false" cascade="none">
      <key column="RoleId" />
      <many-to-many class="RealEstate.Core.Domain.SecuredPage,RealEstate.Core" />
</bag>

上記のコードで、Nhibernate は SecuredPage テーブルからすべてのレコードを取得します。

SecuredPage.RoleId = Staff.id

でもそうであってほしい

SecurePage.RoleId = Staff.StaffLevel

何らかの理由でロール エンティティを作成しなかったため、レベル (ロール) に基づいてスタッフのセキュリティで保護されたページを直接取得しようとしています。

私の問題について教えていただければ幸いです。Nhibernate ガイドを確認し、コレクション マッピングについてすべて読みましたが、わかりませんでした。

ありがとう

4

1 に答える 1

1

問題は、実際には1対多ではないことだと思います。実際には、これは多対多の関係の表現です。

これはあなたが聞きたいことのように聞こえないことはわかっていますが (Role エンティティを作成していないと言ったように)、自分のためにそうすることを検討したい場合があります。

あなたが提示したこれら2つの表の間の相互参照として機能する「役割」表はありますか?

そうでない場合は、作成する必要があります。これにより、問題の解決に役立ちます。その場合、従業員と役割の間の関係は直接的であると見なし、従業員と SecuredPages は間接的 (役割を介して) であると見なすことができます。

編集:「ロール」エンティティを作成しなかった理由を教えてください。それは私たちにとって明確にするのに役立つかもしれません.

于 2009-01-05T20:32:24.120 に答える