我(希望)即将开始我的第一个NHibernate项目,并遇到了一个绊脚石。非常感谢任何建议。
我正在开发一个项目,我的新代码将与遗留代码并行运行,而我根本无法更改数据模型。我遇到过一个主表没有主键的情况。它是这样的:
假设有一个订单表和一个产品表,以及一个line_item表,其中列出了每个订单中的产品(即order_id,product_id和quantity的构成)。在此数据模型中,很可能以相同的顺序为同一产品提供2个订单项。现有代码中发生的情况是,每当用户更新订单项时,该订单的所有订单项都将被删除并重新插入。因为即使line_item表中所有字段的复合键也不一定是唯一的,这是更新此数据模型中的行项目的唯一可能方法。
我准备保证永远不会尝试更新或删除单个订单项。我能否以与现有代码相同的方式使我的NHibernate代码工作?如果没有,这是否意味着我(a)我根本不能使用NHibernate; (b)我不能使用NHibernate来映射line_item表;或(c)我仍然可以映射此表而不是其关系
提前感谢任何建议
答案 0 :(得分:0)
我认为如果你把它作为一个袋子集合映射到Order上(用inverse =“false”)它就可以了。
注意:大型NHibernate包映射 with inverse =“false”是低效的 应该避免; NHibernate的 无法创建,删除或更新行 个别地,因为没有钥匙 可用于识别 个别行。
他们警告它,但听起来就像你想要的那样。