这并不完全准确。我有一个用户表,一些/大多数用户是培训师。有一个 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 ?看来我应该只需要一个。
谢谢, 雷夫