代码之家  ›  专栏  ›  技术社区  ›  George Mauer

NHibernate-映射到次键的最佳方法

  •  0
  • George Mauer  · 技术社区  · 14 年前

    我正在尝试将一个新的域模型映射到一个固定模式的遗留数据库,并且一直在研究如何进行某种类型的映射。我的问题是这样的。

    有不同类型的工人。例如一个小时工和一个工薪工。

    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映射。我也知道。就目前而言,我只想得到关于如何解决技术问题的建议。

    1 回复  |  直到 14 年前
        1
  •  2
  •   cbp    14 年前

    我相信你在找 NHibernate docs

    顺便说一句,映射到遗留模式是很难的-准备一些严重的痛苦!从好的方面来说,当你从另一边出来的时候,你将成为一个NHibernate专家。