我有一个使用关联表和cascade =“save-update”的两个实体之间定义的多对多关系。NHibernate额外更新查询运行
实体1包含实体2的列表,相反,实体2包含实体1的列表。从这个worflow输出的SQL似乎确定...
- 创建ENTITY1和ENTITY2对象
- 添加到ENTITY2名单上ENTITY1
- 呼叫session.Save上ENTITY1
- >插入语句针对两个实体运行,然后插入关联表中的记录将它们链接在一起。
但是,如果ENTITY2我第一呼叫session.Save,将其添加到列表中,然后调用session.Save上ENTITY1还有一个额外的UPDATE语句运行其将所有ENTITY2的价值观,以完全一样的东西被插入在开始处。
虽然不会引起任何问题,但它是一种额外的查询降低性能。我玩过逆向属性,但这并不能消除额外的更新语句。目前双方都有inverse =“false”,因为无论保存哪个实体,我都希望更新关联表。
任何想法?
只记得一个会话不是线程安全的。我认为大多数人在aspnet中使用'Session-per-request'或者在应用程序中使用'session-per-thread' – 2009-07-21 06:23:04