在没有主键的表上使用NHibernate

时间:2010-01-06 22:23:51

标签: nhibernate

我(希望)即将开始我的第一个NHibernate项目,并遇到了一个绊脚石。非常感谢任何建议。

我正在开发一个项目,我的新代码将与遗留代码并行运行,而我根本无法更改数据模型。我遇到过一个主表没有主键的情况。它是这样的:

假设有一个订单表和一个产品表,以及一个line_item表,其中列出了每个订单中的产品(即order_id,product_id和quantity的构成)。在此数据模型中,很可能以相同的顺序为同一产品提供2个订单项。现有代码中发生的情况是,每当用户更新订单项时,该订单的所有订单项都将被删除并重新插入。因为即使line_item表中所有字段的复合键也不一定是唯一的,这是更新此数据模型中的行项目的唯一可能方法。

我准备保证永远不会尝试更新或删除单个订单项。我能否以与现有代码相同的方式使我的NHibernate代码工作?如果没有,这是否意味着我(a)我根本不能使用NHibernate; (b)我不能使用NHibernate来映射line_item表;或(c)我仍然可以映射此表而不是其关系

提前感谢任何建议

1 个答案:

答案 0 :(得分:0)

我认为如果你把它作为一个袋子集合映射到Order上(用inverse =“false”)它就可以了。

Collection Mapping

  

注意:大型NHibernate包映射   with inverse =“false”是低效的   应该避免; NHibernate的   无法创建,删除或更新行   个别地,因为没有钥匙   可用于识别   个别行。

他们警告它,但听起来就像你想要的那样。