我有一個Album
實體,其中有IList<Photo>
。我想用一個快速查詢使用NHibernate來選擇我的所有相冊和照片數量。遷移到NH之前,我不得不使用索引視圖的查詢:Nhibernate和索引視圖
SELECT a.*, t.PhotoCount
FROM dbo.Album a
LEFT JOIN dbo.vw_AlbumPhotoCount t ON t.AlbumID = a.AlbumID
我如何使用NHibernate的這一觀點(vw_AlbumPhotoCount
),以加快查詢?
UPDATE: 我映射了一個簡單的<one-to-one/>
實體亞歷克斯建議,它爲我工作。這個解決方案的一個缺點 - 作爲one-to-one
屬性不能加載懶惰我總是得到LEFT JOIN
時通過id提取相冊。我無法將此實體映射爲<many-to-one/>
屬性,我不確定爲什麼可能因爲該視圖沒有自己的ID屬性。反正ofter它映射爲<many-to-one/>
我取出一張專輯
更新2之後得到了在它空: 我查看了我的架構,並決定刪除該視圖。在這種特殊情況下,最好的辦法是使用NH緩存系統,而不是索引視圖
你最好的選擇可能是將一個簡單的實體映射到你的PhotoCount視圖,然後建立一個這樣的關係。只要確保你不要緩存這些對象。 – AlexCuse
感謝您的回覆。如果您將其作爲答案發布,我會將其標記爲解決方案 – Vladimir