这不完全准确。我有一个用户表,一些/大多数用户是培训师。 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
答案 0 :(得分:2)
我猜你在用户上有一对多映射到TrainerPayment?你需要告诉一对多,TrainerPayment表上的FK被称为TrainerId,而不是像一对多那样的UserId也会默认。