2009-12-15 105 views
3

我想使用NHibernate和流利NHibernate安裝示例項目。我使用Fluent NHibernate網站上的example mappingsNHibernate多對多低效率?

我的問題是有關的商店和商品之間的許多一對多的映射。看起來(在查看生成的SQL時),當向商店添加產品時,NHibernate刪除屬於該商店的關聯表(StoreProduct)中的所有記錄,然後再次插入所有記錄,現在包括關聯到我添加的新產品。

這是默認的行爲還是我失去了一些東西?每次需要添加一個關聯時,刪除並重新插入所有關聯似乎並不是非常有效。

+0

這是不正常的行爲。您對示例項目做了哪些改變? – 2009-12-15 12:27:03

+0

我恢復了所有的更改,但這種行爲依然存在。唯一的區別是在配置中,因爲我使用的是Oracle數據庫。 – 2009-12-15 13:11:02

回答

5

這是正常現象。我相信,當您使用映射策略,它看起來像他們正在使用中的示例此應該纔會發生。一個包表明有一個無序的集合可以有重複的項目。因爲包包項目不是唯一的,NHibernate無法分辨何時您輕鬆添加或從包中取出物品。 NHibernate最簡單的事情就是刪除所有關聯,然後重新添加。我已經玩了多對多的映射(我通常只是映射爲兩個一對多關係),但我相信如果你使用不同的構造,例如,設置(不允許重複),你會發現行爲是不同的。當然,你應該使用任何可以爲你的應用程序提供最多語義的構造。

+0

謝謝,使用HashSet 和更改映射到產品集合上的AsSet()解決了這個問題。 – 2009-12-15 15:42:57