我有一个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