从部分多对多类中使用NHibernate <join>是不是一个好主意?</join>

时间:2012-02-09 16:52:35

标签: nhibernate nhibernate-mapping

我有一个Shop表,一个StaffRole表和一个ShopStaffRole表,用作多对多表,但有IsRequired等其他字段

Shop
  ShopId
  ShopName
  ShopAddress

StaffRole
  StaffRoleId
  StaffRoleName

ShopStaffRole
  ShopStaffRoleId
  ShopId
  StaffRoleId
  IsRequired

所以我的选择似乎是Shop类和StaffRole类,它们之间有NHibernate many-to-many映射,但这不会在我的对象中映射IsRequired模型,因此有一个ShopStaffRole类,以及它与one-to-manyShop之间的StaffRole映射也是有意义的。

但是,仔细检查后,StaffRole表只有Id和Name。仅使用NHibernate joinStaffRoleName作为字符串直接放入ShopStaffRole类,并将StaffRole表表示为类是否有意义共?

我预计此应用程序中StaffRoleName不会发生变化,因此我应该能够使用只读映射来阻止一个ShopStaffRole影响具有相同{{1}的其他人StaffRoleName }}

这是否有意义,或者我错过了什么?感觉就像我的对象模型只是逐个表格地关联我的关系模型。

2 个答案:

答案 0 :(得分:1)

只要冗余不是您最关心的问题,并且您不打算在以后添加任何界面来管理角色,那么您最好采用Join方法。

答案 1 :(得分:0)

事实证明,我回答了自己的问题。我不能说这是永远这是一个好主意,但我觉得现在有这么多潜在的陷阱,这是非常不值得的。

在我的情况下,我意识到虽然这个应用程序不必担心StaffRole更改,但是会有另一个表在稍后引用StaffRole的同时进入范围因此,如果我们想要查找Shop的StaffRole,然后查找此StaffRole所需的所有培训材料,那么在StaffRole-ShopStaffRole和StaffRole-TrainingStaffRole之间使用双向访问器将是一种好方法。