我必须在 NHibernate 中对这种关系进行建模(稍微简化代码以保持主题) - 员工可以是帐户经理(因此,它是可选的):
表 Employee (Id, Number, Name) 表 EmployeeIsAccountManager (Number, MaxAllowedDiscount)
我没有在 EmployeeIsAccountManager 表中有一个 Id 外键指向表 Employee,而是在 Employee 表中有一个 Number 列,它指向 EmployeeIsAccountManager 表中的 Number 列。
我如何在 NHibernate 中映射它?我尝试在 EmployeeIsAccountManager 类映射上使用外部生成器,但如果我使用 Number 作为外部生成值,它会映射到 Employee 的 ID,它是 Id 而不是 Number。我为我的班级建模以使用组合:
public class Employee
{
public virtual int Id { get; set; }
public virtual short Number {get; set; }
public virtual string Name {get; set; }
public virtual AccountManager AccountManager { get; set; }
}
public class AccountManager
{
public virtual short Number { get; set; } /*needed because of ID only?*/
public virtual decimal MaxAllowedDiscount { get; set }
}
我已经尝试了很多(一对一、多对一、外国生成器),但我不知道这是否可以用 NHibernate 完成。顺便说一句:我可以更改类、映射等,但我不能更改表结构,因为它是棕地状态(旧应用程序有 2+ 百万行代码,近 1000 个表格)。
任何帮助表示赞赏,谢谢!泰德