NHibernate中的非标准多对多关系

时间:2011-07-09 22:12:06

标签: nhibernate

我有两个表(Rule和Object)通过多对多关系链接。规则可以与任意数量的对象相关联,也可以与所有对象相关联。

我通常会使用链接表构建此关联,如果关联的规则要与所有对象关联,则Object_ID列将设置为NULL。任何实际上不会引用真实对象的值都可以。

这样,我可以写一个Select来查找与这样的对象相关的所有规则:

SELECT * FROM Rule JOIN RuleObject_Link on Rule.ID = RuleObject_Link.RuleID WHERE RuleObject_Link.ObjectID = <the object ID> or RuleObject_Link.ObjectID IS NULL

问题是我正在使用NHibernate。我无法找到在自动关系/集合结构中表示“所有对象”的方法。

是否有可能使用NHibernate的多对多关系建立这样的关系?

或者我是否必须手动配置链接表并自行处理连接?

1 个答案:

答案 0 :(得分:0)

最好向Rule添加一个单独的布尔字段,表示它普遍适用于所有Object个对象(顺便说一句Object是一个非常糟糕的类名。)

这实际上不参与关系映射,获取对象的整个规则列表需要查询而不是从映射中自动填充,但我现在想不出更好的东西。

相关问题