1

それは完全に正確ではありません。ユーザーテーブルがあり、一部/ほとんどのユーザーはトレーナーです。ユーザーがトレーナーか管理者かを指定する UserRole があり、それが唯一の違いです。おそらく最もクリーンな構造ではありませんが、多くの場合、管理者はトレーナーでもあり、うまく機能します.

だから、TrainerPayment のようなテーブルを用意します。いくつかの支払い情報とそれに関連付けられたトレーナーがあり、もちろんユーザーです。それで

public int User Trainer {get;set;}

したがって、NH を使用してスキーマを作成すると、

PaymentName   varchar(250)
PaymentAmount double
TrainerId     int FK
UserId        int FK

次に、NH はこれらの FK の両方を異なるクエリに使用します。たとえば、load(trainerId) を実行すると、userid=2 を検索する SQL が生成されます。そして、どこかでクエリを実行し、trainerId を使用します。申し訳ありませんが、どこで発生したか忘れましたが、TrainerId を削除しようとしたところ、エラーが発生しました。参考になると思ったら調べてみます。

明確でない場合、私の質問は、なぜこれらの FK の両方が必要なのですか? 本当に1つだけ必要なようです。

ありがとう、ライフ

4

1 に答える 1

2

TrainerPayment にマップする User に 1 対多があると思いますか? 1 対多のように UserId ではなく、TrainerPayment テーブルの FK が TrainerId と呼ばれることを 1 対多に伝える必要があります。

于 2012-12-21T19:24:45.747 に答える