我有一個對象表和對象別名表。nhibernate集合集合映射避免n + 1選擇和重複行以獲取連接
別名只是字符串的一組集合:
object.Aliases
如果我映射這樣的集合:
<class name="Object" table="Object" lazy="false">
...
properties...
...
<set name="Aliases" table="Aliases" inverse="true" lazy="false" fetch="join" >
<key column="ObjectId" />
<element column="Name" type="String"/>
</set>
...
</class>
然後
session.CreateCriteria(typeof (T)).List<T>();
從基地寶庫,它獲取所有對象,返回每個別名的重複項。爲什麼?我如何擺脫列表中的重複對象?
謝謝大家的時間。
編輯: 更新的映射...但這就是所有的映射。別名沒有它自己的類,因爲它只是需要被加載到ISet<string> Object.Aliases
你問關於選擇n + 1還是重複?或兩者? – Rippo 2011-04-12 15:17:53
你可以發佈更多的信息,代碼和映射的兩個表 – Rippo 2011-04-12 15:19:47
我要求正確的映射排除n + 1選擇,哪些不會返回重複。 如果我刪除fetch =「加入」,那麼結果是沒有重複,但有n + 1選擇問題。如果我離開獲取=「加入」,那麼我只有一個選擇,但重複的問題 至於映射..這就是它,唯一相關的部分...但我會更新更多的解釋 – 2011-04-13 07:34:18