我有一个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-many
和Shop
之间的StaffRole
映射也是有意义的。
但是,仔细检查后,StaffRole表只有Id和Name。仅使用NHibernate join将StaffRoleName
作为字符串直接放入ShopStaffRole
类,并将StaffRole
表表示为类是否有意义共?
我预计此应用程序中StaffRoleName
不会发生变化,因此我应该能够使用只读映射来阻止一个ShopStaffRole
影响具有相同{{1}的其他人StaffRoleName
}}
这是否有意义,或者我错过了什么?感觉就像我的对象模型只是逐个表格地关联我的关系模型。
答案 0 :(得分:1)
只要冗余不是您最关心的问题,并且您不打算在以后添加任何界面来管理角色,那么您最好采用Join
方法。
答案 1 :(得分:0)
事实证明,我回答了自己的问题。我不能说这是永远这是一个好主意,但我觉得现在有这么多潜在的陷阱,这是非常不值得的。
在我的情况下,我意识到虽然这个应用程序不必担心StaffRole
更改,但是会有另一个表在稍后引用StaffRole
的同时进入范围因此,如果我们想要查找Shop的StaffRole,然后查找此StaffRole所需的所有培训材料,那么在StaffRole-ShopStaffRole和StaffRole-TrainingStaffRole之间使用双向访问器将是一种好方法。