Свободный NHibernate - Фильтрация результатов - PullRequest
0 голосов
/ 22 июля 2011

FNH Вопрос новичка -

У меня есть два объекта RR и TT, определенные следующим образом:

public class RR
{
   Id
   Name
   TT_Id //corresponds to TT.Id
}

public class TT
{
   Id
   Name
   Type   
}

Я хочу отфильтровать записи из RR согласно следующему SQL:

SELECT RR.*
FROM RR 
LEFT OUTER JOIN TT ON RR.TT_Id = TT.Id
WHERE TT.Type <> 7 

Может кто-нибудь подсказать, как мне добавить критерии фильтра для достижения вышеупомянутого в NH.

Спасибо!

1 Ответ

3 голосов
/ 25 июля 2011

почему у вас TT_Id , а не TT в RR ?ИМО сделает многое намного сложнее, чем нужно.

, если он будет ссылаться на TT , тогда

resultlist = session.CreateCriteria<RR>()
    .CreateCriteria("TT")
    .Add(Restrictions.Not(Restrictions.Eq("Type", 7)))
    .List<RR>();

в противном случае

var subquery = DetachedCriteria.For<TT>()
    .Add(Restrictions.Not(Restrictions.Eq("Type", 7)))
    .SetProjection(Projections.Id());

resultlist = session.CreateCriteria<RR>()
    .Add(Subqueries.In("TT_id", subquery)))
    .List<RR>();

или

IList<object[]> resultlist = session.CreateSqlQuery("SELECT RR.* FROM RR LEFT OUTER JOIN TT ON R.TT_Id = TT.Id WHERE TT.Type <> 7 ")
    .List().Cast<object[]>();

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