我正在尝试将一个新的域模型映射到一个固定模式的遗留数据库,并且一直在研究如何进行某种类型的映射。我的问题是这样的。
有不同类型的工人。例如一个小时工和一个工薪工。
HourlyWorker的数据存储在WORKERS表和hourlyworkers表中,这两个表之间具有标准外键关系WORKERS.PK_WORKERS =每小时_WORKERS.FK_WORKERS.
到现在为止,一直都还不错。
class Timesheet
HourlyWorker Owner { get; private set; }
在遗留数据库中,它以一种相当简单的方式映射到时间表表,但有一个问题:指向所有者的外键链接不是通过指向WORKER表的链接来表示的,而是通过指向HOURLY\u WORKER表的链接来表示的。换句话说,外键FK\u\u WORKER是唯一标识符,但是
不
指向NHibernate视图中的值作为主键。
我不能简单地更改HourlyWorker的Id以映射到HourlyWorker表,因为引用houry workers的数据库中有70%使用WORKER的主键作为外键Id。
我可以选择什么来映射这种关系?
可能会使这更容易:所有者属性是只读的-时间表不能更改其所有者。但是,当一个小时工作人员被删除时,删除应该级联到他们的所有时间表。
最后,请不要回复我更改数据库的建议。我知道。如果你想要我客户的电话号码,这样你就可以试图说服他们,他们的模式不是最完美的存在,那么我可以提供它。我已经打了几个月了。另外,请不要回答,这表明问题是管理,而不仅仅是NHibernate映射。我也知道。就目前而言,我只想得到关于如何解决技术问题的建议。