[OK]を他のユーザーはuserFavouriteに行を追加します。今私は、UserIdとOtherUserIdの両方の列と、2つの外部キー制約を持つUserテーブルの間で参照整合性を持っています。NHibernateの設計および複合キー
私の質問は、NHibernateを介してこれにアクセスするためのベストプラクティスですか?基本的なGet <>メソッドでは、ID列であるIDが使用されます。この場合、テーブルのユニークな識別特性はUserIdとOtherUserIdの複合キーであるため、複合キーを持つべきだと私は思っています。私はどこにでも彼らが悪いと読んで、DBが正しく設計されていれば、私はそれらを使うべきではありません。
だから、私はDBを設計できるかそうでないと考えて、私は
UserFavourite(一意ID、ユーザーID、OtherUserId、AddDate)
を持ち、ユニークID取得のためのPKとID作ることができると仮定しますメソッドを呼び出し、UserId/OtherUserId列にユニーク制約を設定します。しかし、これは私の問題を解決しません、私はコードを介して行を削除するか、それを得るために、私はまだUniqueIDを渡す必要がありますが、私はアクセスできません。
"あなたのお気に入りからこのユーザー(ユーザーID 142)を削除してください"と言うことができます。だから、私はUserIdと自分のUserIdにしかアクセスできないので、何とか私は一意のIDではなく、それらの2つのIDを使ってNHibernateクエリを実行できる必要があります。
NHibernateで理想的な方法でこのケースをどのように扱うべきか指摘できますので、コンポジットキーを使用せずにこれらのクエリを簡単かつ効率的に行うことができますか?純粋な関係テーブルについては
ユーザークラスの2つの1対多のマッピングについて少し混乱していますが、これでサンプルマッピングを投稿できますか?私はUserIdプロパティを宣言し、その同じプロパティのファイルに2つの別々のマッピングを持っていることをどうにかしていません。 UniqueIdを削除に使用することはおそらくないと言いますが、それ以外はどうすれば削除できますか?私はセッションオブジェクトを使用して削除する唯一の方法は、IDと思った? – NZJames