nHibernate запрос к внешнему соединению - PullRequest
1 голос
/ 12 января 2011

Учитывая этот запрос 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);

Это хорошо работает, но если у категории нет результатов поиска, мы не получим ее обратно.

Кто-нибудь может предложить подход к этому?

1 Ответ

3 голосов
/ 12 января 2011

Внешнее объединение выражается через 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, так как я не вижу никаких агрегированных столбцов в вашем выборе.(Хотя и не проверял запрос).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...