【问题标题】:what exactly is going inside Nhibernate.ISession SaveOrUpdateNhibernate.ISession SaveOrUpdate 中到底发生了什么
【发布时间】:2011-10-18 16:50:29
【问题描述】:

我正在为我的项目使用 MVC、NHibernate 和 Sharp 架构。
每当我使用SaveOrUpdate 保存对象(实体)时,都会有子实体也会更新。但它不会更新子实体,而是为所有子实体运行DELETE-INSERT

任何帮助。

【问题讨论】:

  • 如何修改子实体?
  • 当您修改实体上的集合属性时会发生这种行为,而不是修改/添加项目到集合中。 NHibernate 看到属性本身发生的变化并执行删除/插入。如果您加载子项目并将它们分配给实体,请不要。急切加载它们或延迟加载它们。
  • 请您详细说明问题。对于有限的描述,其他人很难提供帮助

标签: nhibernate sharp-architecture


【解决方案1】:

这是因为您没有更新现有的子对象,而是替换了它们的整个集合。这让 Nhibernate 认为它必须保存新的集合。

【讨论】:

  • 是的。这正是正在发生的事情。当子实体数据库中没有数据时,它只是在数据库中插入一个。但是当子实体已经有数据可用时,它会删除之前的行,然后重新插入当前数据。
  • 关于如何修改的任何建议,当我们添加子实体的新实例时,它应该只添加新行而不是删除以前的行并再次插入。
  • 这是因为您分配了集合。不要分配集合,将您的项目添加到现有集合中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2012-08-29
  • 2021-03-18
  • 2018-08-25
相关资源
最近更新 更多