Fluent nhibernate проблема, запрос

Буду очень признателен за помощь в решении моей проблемы.

Класс L содержит набор R, а R содержит набор Q. Каждый экземпляр R может существовать в нескольких экземплярах L, а каждый экземпляр Q может существовать в нескольких экземплярах R.

Все работает нормально за исключением того, что у меня есть функция, которую я не могу понять, как написать.

У меня есть функция, которая получает экземпляр/объект R и Q. Итак, с R и Q я хотел бы запросить L и выяснить, где используется R. Я также хотел бы узнать, используется ли и где Q.

Спасибо за информацию и помощь!


person Johan    schedule 26.08.2011    source источник


Ответы (1)


Пересмотрено: исправлены опечатки

R myR = ...;
Q myQ = ...;

var LsWithMyRandFlagIfQisUSed = session.QueryOver<L>()
    .JoinQueryOver(l => l.Rs)
    .Where(r => r.Id == myR.Id)
    .List<L>()
    .Select(l => new
    {
        L = l,
        QisUsed = l.Rs.Any(r => r.Qs.Contains(myQ)),
    });

Изменить: добавлен синтаксис linq, нет теста

R myR = ...;
Q myQ = ...;

var LsWithMyRandFlagIfQisUSed =
    from l in session.Query<L>()
    where l.Rs.Contains(myR)
    select new 
    {
        L = l,
        QisUsed = l.Rs.Any(r => r.Qs.Contains(myQ)),
    });
person Firo    schedule 29.08.2011
comment
Кажется, я забыл ответить здесь. Спасибо за попытку, но я не мог заставить это работать должным образом. - person Johan; 17.10.2011
comment
в чем проблема? Может быть, я могу это исправить - person Firo; 17.10.2011
comment
ах, я вижу, я попробовал это на примере и переписал его для ваших имен и получил ошибку - person Firo; 20.10.2011
comment
О, спасибо, попробую. Я новичок в вопросе, и у меня еще не было времени, чтобы полностью понять его синтаксис и преимущества с напряженным графиком работы, в котором я находился. Я нахожу это несколько сложным... к сожалению, они просто не могли переопределить linq / lambda... - person Johan; 21.10.2011
comment
у них также. просто using NHibernate.Linq и вы можете использовать from l in Session.Query<L>() where ... - person Firo; 21.10.2011