我已经抛出研究数据库性能问题与使用NHibernate的新应用程序。我注意到,在一些表上NH执行了一行插入操作,然后更新了具有完全相同数据的同一行。到目前为止,我收集到的是插入后的更新在定义了多对一关系的表上完成。在任何情况下,我都希望NH能够指出数据是相同的,并抑制额外的更新。有没有办法抑制这种额外的更新?是否有可能在NHibernate中插入后禁止更新?
6
A
回答
6
听起来好像你在多对一的关联上有双向关系。
解决该问题的方法是在关系的一对多一侧添加inverse="true"
。 Here is an example。
插入由孩子保存其数据执行。更新由父级设置数据库中子记录的parentId执行。如果关系是单向的,那么第一个插入将没有parentId,并且需要更新。在双向关系中,更新过程如您所描述的那样是多余的。 inverse="true"
告诉父母,孩子负责维护关系,从而防止额外的更新。
+3
-1,因为这发生在非双向关系上。 – BradLaney 2012-02-07 23:26:06
相关问题
- 1. 是否有可能更新然后在mysql中插入?
- 2. 是否有可能禁止在web.config中
- 3. 插入后NHibernate仍然会更新
- 4. SQLite是否能够更新或插入
- 5. 是否有可能在ajax更新后重新生成分页?
- 6. 是否有可能在编译时禁止从类中派生?
- 7. 如果可能,如何更新,否则在oracle中插入
- 8. NHibernate如何确定是否插入或更新记录?
- 9. 是否可以在单个sqlite语句中插入和更新?
- 10. Postgres中的AFTER触发器是否会阻止插入/更新?
- 11. 是否有可能禁止取得文件的所有权?
- 12. 插入或更新是否存在行
- 13. 插入或更新是否存在MYSQL
- 14. 检查是否存在或不存在然后插入更新
- 15. 是否可以在mysqldb中executemany插入后获取所有lastrowids?
- 16. 如果更新失败,mySql是否有更新/插入组合插入?
- 17. 是否有理由在插入/更新中使用CURRENT_TIMESTAMP?
- 18. 是否有可能中止同步XmlHttpRequest?
- 19. Nhibernate在添加Event Listener后插入时应该更新
- 20. 是否有可能在插入之前将id插入到数据库中
- 21. 是否有可能在过去推送提交树中插入新提交?
- 22. 检查密钥是否存在,然后插入或更新
- 23. 更新记录是否存在;否则在Oracle中插入
- 24. SQL - 是否有可能在插入值的内部有if if
- 25. 是否有可能在C++中禁止在编译时调用某个函数?
- 26. 是否有可能禁止注释继承?
- 27. 是否有可能禁止从第三方Web服务的类?
- 28. 是否有可能禁止与tastypie资源的索引?
- 29. 是否存在记录表,然后更新否则插入新的
- 30. NHibernate - 插入时生成防止值的更新
代码?插入后的所有列的更新不正常。 – dotjoe 2009-11-05 21:07:18