Как вернуть объединенные объекты как результат критериев? - PullRequest
0 голосов
/ 07 июля 2010

Мне интересно, как я могу представить следующее в API критериев

return DataContext.Session.CreateQuery("
    select
        ss.PracticeArea 
    from Subsection as ss
    where ss.Location = :Location
    ")
    .SetEntity("Location", location)
    .List<PracticeArea>();

Предложение where достаточно прямолинейно, и бит, над которым я спотыкаюсь, - это как получить объединенный объект в результате?

DataContext.Session.CreateCriteria<Subsection>()
    .Add(Restrictions.Eq("Location", location))
    .List<PracticeArea>();

Это моя попытка, которая не работает, так как возвращает неправильный тип.

Ответы [ 2 ]

3 голосов
/ 07 июля 2010

Попробуйте это:

DataContext.Session
    .CreateCriteria<Subsection>()
    .CreateCriteria("Subsecion", "ss")
    // the "select" clause is called "projection"
    .SetProjection(Projections.Property("ss.PracticeArea"))
    .Add(Restrictions.Eq("Location", location))
    .List<PracticeArea>();
0 голосов
/ 07 июля 2010

У меня работает следующее, я не знаю, будет ли оно работать лучше или хуже, чем при использовании проекции?

DetachedCriteria subsections = DetachedCriteria.For<Subsection>()
    .SetProjection(Projections.Property("PracticeArea.Id"))
    .Add(Restrictions.Eq("Location", location));

return DataContext.Session
    .CreateCriteria<PracticeArea>()
    .Add(Subqueries.PropertyIn("Id",subsections))
    .List<PracticeArea>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...