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 ?看来我应该只需要一个。

谢谢, 雷夫

4

1 回答 1

2

我猜您在映射到 TrainerPayment 的用户上有一对多?您需要告诉一对多,TrainerPayment 表上的 FK 称为 TrainerId,而不是像一对多那样默认的 UserId。

于 2012-12-21T19:24:45.747 回答