2011-01-12 79 views
1

鑑於這種NHibernate的查詢:NHibernate的查詢外連接

var cats = _nhibernateSession.QueryOver<SavedSearchResult>().Where(x => x.UserId == userId && x.IsDeleted == false).JoinQueryOver<SearchCategory>(x => x.SearchCategory) 
.List<SavedSearchResult>().ToList().GroupBy(c => c.SearchCategory.Id); 

這種運作良好,但如果一個類沒有任何搜索結果,那麼我們沒得到的類別回來。

任何人都可以提出一個方法嗎?

回答

3

外連接是通過QueryOver這樣表示:

IQueryOver<Cat,Kitten> catQuery = 
    session.QueryOver<Cat>() 
     .Left.JoinQueryOver(c => c.Kittens) 
      .Where(k => k.Name == "Tiddles"); 

(從QueryOver上NHForge.org文檔)

所以,你的情況,這將是:

var cats = 
     _nhibernateSession.QueryOver<Categories>() 
        .Left.JoinQueryOver(x => x.SearchCategory) 
        .Where (c => c.UserId == userId && c.IsDeleted = false); 

我省略了group by子句,因爲在您的select中沒有看到任何聚合列。 (儘管如此,還沒有測試過查詢)。