我有一個使用關聯表和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