Ted*_*Net 5 nhibernate brownfield nhibernate-mapping
我必须在NHibernate中建模这种关系(简化代码以保持主题) - 员工可以是一个帐户管理员(因此,它是可选的):
表Employee(Id,Number,Name)表EmployeeIsAccountManager(Number,MaxAllowedDiscount)
表EmployeeIsAccountManager指向表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 }
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多(一对一,多对一,外来生成器),但我无法弄清楚是否可以用NHibernate完成.顺便说一下:我可以改变类,映射等但是我不能改变表结构,因为它的棕色区域状态(旧应用程序有200多万行代码,近1000种形式).
任何帮助表示赞赏,谢谢!摊晒
你的问题让我思考类继承,你可以将你的类 AccountManager 映射为 Employee 的子类,然后你将能够做你想做的事情,我已经为你测试了一个映射,但是当你设计表时,这种方式不会解决您的需求,因为在映射中您必须注意两点:
我想到的最后一个选项是使用 Employee 类中映射到 AccountManager 表的属性,您可以在其中指定自定义选择来获取您需要的值我假设属性 MaxAllowedDiscount,但这也有一些限制,当您使用公式映射属性时,无法插入或更新该属性。
希望这可以帮助我了解是否有疑问。
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |