Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 [NHibernate] формирование запроса  [new]
_Novichok
Member

Откуда:
Сообщений: 316
Здравствуйте.

Постараюсь описать проблему.
Есть класс, по которому нужно делать выборку:
public class Assent
{
    //...
    public virtual int Id { get; set; }
    //...
    public virtual IList<WaterUsePurposeSet> WaterUsePurposes { get; set; } // список
    //...
}

public class WaterUsePurposeSet
{
    public virtual int Id { get; set; }
    public virtual WaterUsePurposeType Type { get; set; }
}

public class WaterUsePurposeType
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
}

Пользователь может выбрать произвольное число WaterUsePurposeType и запрос, наверное, должен формироваться как-то динамически.
Нужно делать выборку среди Assent по WaterUsePurposeType.Id. Сделать надо это с помощью NHibernate: HQL, Linq, chain methods, ... - каким-то способом.
Ума не приложу, как это сделать.

Спасибо
18 июл 13, 14:11    [14583782]     Ответить | Цитировать Сообщить модератору
 Re: [NHibernate] формирование запроса  [new]
_Novichok
Member

Откуда:
Сообщений: 316
Для данной проблемы нашел такой выход:
using (ISession session = sessionFactory.OpenSession())
{
    using (ITransaction tx = session.BeginTransaction())
    {
        IList<Assent> tempList = null;
        foreach (WaterUsePurposeType t in types)
        {
            IQueryOver<Assent, WaterUsePurposeSet> quer1 =
            session.QueryOver<Assent>()
                   .JoinQueryOver<WaterUsePurposeSet>(c => c.WaterUsePurposes)
                   .Where(k => k.Type.Id == t.Id);
            tempList = quer1.List();
            assents.AddRange(tempList.Where(asss => !assents.Contains(asss)));
        }
        tx.Commit();
    }
}

Вот только смущает тот момент, что выборка происходит для каждого WaterUsePurposeType по отдельности.
Может можно как-то оптимизировать?
19 июл 13, 00:19    [14586945]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить