【问题标题】:nHibernate batch insert doesn't work with associations?nHibernate 批量插入不适用于关联?
【发布时间】:2010-02-19 01:17:38
【问题描述】:

我正在尝试查找有关 nHibernate 如何决定如何将多个插入批处理在一起的更多信息。显然,如果您有一个相同类型的简单对象列表,没有子对象,它就可以工作。

在我的应用程序中,我在三个表 A、B 和 C 之间存在一对多的关系:A 有很多 B,B 有很多 C。我正在为 A 的 Id 使用本机生成器,但为 B和 C 我只是使用在代码中分配的复合键,因此 nHibernate 只能进行插入。这些似乎工作正常,我可以正确保存所有对象。

问题在于 nHibernate 似乎不够聪明,无法尝试先批量插入所有类型 A 的对象,然后批量插入所有 B,最后批量插入所有 C。现在,它会尝试仅批处理 C 类型的对象(如果有多个)。

这听起来正确吗?有没有办法改变这种行为?

我的应用程序需要同时添加数百个 A、B 和 C 类型的对象,并且必须一个一个地做是一个很大的性能问题。

【问题讨论】:

    标签: nhibernate batch-file insert


    【解决方案1】:

    如果有人需要任何帮助,nHibernate 确实无法在不同的树中批量插入对象。在我的应用程序中,我最终修改了对象结构以使 nHibernate 满意。

    【讨论】:

    • 请问,您的对象结构发生了什么变化?
    • 早在 10 年,我最终创建了不同的列表,因此我可以按正确的顺序插入对象(首先是所有叶子,然后是父叶子,依此类推)。似乎最新版本的 nHibernate 可以按顺序正确批量插入对象;我刚刚在他们的发行说明列表中看到了这一点,所以我真的不知道它的效果如何。
    • 感谢您的快速回复。我想知道是否可以将所有插入一起批处理 A、B 和 C。但似乎它只能批处理完全相同的 IDbCommands(相同的 SQL,相同的参数 #)。我正在使用 3.2,但它还不够聪明。我可能最终会实现自己的 SqlClientBatcher。
    猜你喜欢
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多