Nhibernate.ISession SaveOrUpdate中到底发生了什么

Nhibernate.ISession SaveOrUpdate中到底发生了什么,nhibernate,sharp-architecture,Nhibernate,Sharp Architecture,我在项目中使用MVC、NHibernate和Sharp架构。 每当我使用SaveOrUpdate保存对象(实体)时,也会更新子实体。但不是更新子实体,而是为所有子实体运行DELETE-INSERT 任何帮助。发生这种情况是因为您没有更新现有的子对象,而是替换了它们的整个集合。这使得Nhibernate认为它必须保存新的收藏 如何修改子实体?在修改实体上的集合属性时,而不是在集合中修改/添加项时,会发生这种行为。NHibernate看到属性本身发生的更改,并执行删除/插入操作。如果您正在加载子项并

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


任何帮助。

发生这种情况是因为您没有更新现有的子对象,而是替换了它们的整个集合。这使得Nhibernate认为它必须保存新的收藏

如何修改子实体?在修改实体上的集合属性时,而不是在集合中修改/添加项时,会发生这种行为。NHibernate看到属性本身发生的更改,并执行删除/插入操作。如果您正在加载子项并将其分配给实体,请不要。你能详细解释一下这个问题吗。其他人很难在有限的描述中提供帮助。这正是正在发生的事情。当子实体数据库中没有数据时,它只在数据库中进行一次插入。但是,当子实体已有可用数据时,它会删除前面的行,然后重新插入当前数据。关于如何修改的任何建议,当我们添加子实体的新实例时,它应该只添加新行,而不是删除以前的行并再次插入。这是因为您正在分配集合。不要分配集合,请将项目添加到现有集合。