Запрос nhibernate, выбирая только определенные поля

У меня есть эти объекты: ClassB1 и ClassB2 являются двумя отдельными объектами. У них есть отдельные таблицы, но те же поля.

У них обоих есть ссылка на ClassC, у которого есть отдельная таблица.

ClassA
   -> ClassB1
         -> Property1
         -> ClassC
             -> Property2
   -> ClassB2
         -> Property1
         -> ClassC
             -> Property2

Мне нужно запросить Property1 и Property2, пока у меня есть это:

 ClassB1 classB1Alias = null;
 ClassB2 classB2Alias = null;
 ClassC classCAlias = null;


    var query = s.QueryOver<ClassA>();
    if (!string.IsNullOrWhiteSpace(searchFilter.Property1))
    {
        query.JoinAlias(d => d.ClassB1, () => classB1Alias );
        query.WhereRestrictionOn(() => classB1Alias.Property1)
            .IsLike("%" + searchFilter.Property1 + "%");

        query.JoinAlias(p => p.ClassB2, () => classB2Alias);
        query.WhereRestrictionOn(() => classB2Alias.Property1)
            .IsLike("%" + searchFilter.Property1+ "%");
    }
    if (!string.IsNullOrWhiteSpace(searchFilter.Property2))
    {
        query.JoinAlias(d => d.ClassB1.ClassC, () => classCAlias);
        query.JoinAlias(d => d.ClassB2.ClassC, () => classCAlias);
        query.WhereRestrictionOn(() => classCAlias.Property2)
           .IsLike("%" + searchFilter.Property2+ "%");
    }

    // select only Property1 and Property2 here

    return query.List();

Я видел проекции, но образцы связаны с критерием объекта. Я просто новичок в nhibernate, и я весь день кодирую, чтобы получить правильный запрос, который должен быть

Select all ClassB1 and ClassB2 which have a Property1 equal to x where ClassB1.ClassC.Property2 and ClassB2.ClassC.Property2 equal to y

вроде нужна помощь здесь Спасибо

пс. мой запрос для Property2 правильный?

1 ответ

Разве этого недостаточно, чтобы использовать это?

query.Where(x => x.ClassB1Reference.Property1 == x && x.ClassB2Reference.Property1 == x).
Where(x => x.ClassB1Reference.ClassCReference.Property2 == y && x.ClassB2Reference.ClassCReference.Property2 == y);
Другие вопросы по тегам