【发布时间】:2014-05-07 12:09:05
【问题描述】:
我有两个实体Machine 和Product 的简单案例,其中Machine 可以有零个或一个Product。代码中不需要反向关联(可能是某种集合)。
问题出在遗留的数据库模型中,我无法更改 Machine 表的结构,因此我创建了一个额外的表 MachineProduct,其中包含两个表的外键。基本上你会为多对多关系做什么,但实际上此表中的 MachineId 将是唯一的。
现在我需要在 NHibernate 中映射它。我能做的是将它映射为多对多集合,并确保 Machine.Products 集合中的元素不超过一个,但我觉得应该有一种更准确的方法来处理这个问题。我想这就是 ORM 映射的全部意义所在。
我正在使用 NHibernate 代码映射,但 XML 映射示例也可以。
【问题讨论】:
-
现有机器(表)是否对产品有 FK?像 Machine.ParentProductSurrogateKey 一样? (我认为如果它存在,它将可以为空)....
-
没有。如果是这样的话,我可以使用简单的多对一。问题是我没有权限在数据库中添加该关系。
-
好的,我现在明白了。您正在尝试添加一个不存在但不修改原始表的关系。我没有答案,但让我看看我曾经遇到过的东西。
标签: nhibernate nhibernate-mapping nhibernate-mapping-by-code