为什么nhibernate会在架构中添加两个userId?

时间:2012-12-21 19:18:29

标签: nhibernate foreign-keys schema

这不完全准确。我有一个用户表,一些/大多数用户是培训师。 UserRole指定用户是培训师还是管理员,这是唯一的区别。也许不是最干净的结构,但通常管理员也是培训师,而且工作正常。

所以我会有一个像TrainerPayment的桌子。它有一些付款信息和与之相关的培训师当然是用户。所以

public int User Trainer {get;set;}

因此,当我使用NH创建架构时,我得到了

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

然后NH使用这两个FK进行不同的查询。因此,例如,如果我执行加载(trainerId),它会生成查找userid = 2的sql。在其他地方,它会进行查询并使用trainerId。对不起,我忘了发生了什么,但我试图删除TrainerId,我收到了一个错误。如果你觉得它有用,我可以查一查。

如果不清楚我的问题是为什么我需要这两个FK?看起来我应该只需要一个。

谢谢, RAIF

1 个答案:

答案 0 :(得分:2)

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