Запрос NHibernate <T>с независимыми критериями ... - PullRequest
3 голосов
/ 06 марта 2012

У меня есть что:

var query = session.Query<MyClass>();    

// Here I need to execute a detached criteria, like that :
//  query.UnderlyingCriteria.Add(SpatialExpression.Within("Geo", extent));

var t = query.Select(item => new MyClassView
                                      {
                                          Name, Year, Code
                                      }

Это способ сделать это с помощью Query? Или может быть другой способ? Мне нужен результат IQueryable ...

Спасибо

1 Ответ

2 голосов
/ 06 марта 2012

провайдер linq не использует Критерии под прикрытием, он использует AST из парсера HQL. Если вам действительно нужен IQueryable, вы можете сформулировать запрос, подобный этому

var ids = session.QueryOver<MyClass>()
    .UnderlyingCriteria.Add(SpatialExpression.Within("Geo", extent))
    .Select(myclass => myclass.Id)
    .List<int>();

var query = session.Query<MyClass>()
    .Where(x => ids.Contains(x.Id))
    .Select(item => new MyClassView
    {
        Name, Year, Code
    });

Примечание: при этом используются 2 поездки туда и обратно

...