【发布时间】:2011-05-21 12:56:24
【问题描述】:
我必须在 NHibernate 中对这种关系进行建模(稍微简化代码以保持主题)——员工可以是客户经理(因此,它是可选的):
表员工(ID、编号、姓名) 表 EmployeeIsAccountManager (Number, MaxAllowedDiscount)
我在 EmployeeIsAccountManager 表中没有指向 Employee 表的 Id 外键,而是在 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 个表单)。
感谢任何帮助,谢谢! 泰德
【问题讨论】:
-
查找property-ref映射属性...
标签: nhibernate nhibernate-mapping brownfield