Я знаю, что мой уровень БД возвращает IQueryable своих объектов DTO. Я использую NHibernate, который поддерживает Linq. Но проблема в том, что я должен закрыть сеанс, когда мой уровень БД покидает, и поэтому IQueryable больше не работает. Но я также не мог вернуть список, потому что тогда запросы не будут выполняться на SQL Server.
Возможно ли, что я верну IQueryable, исключу Expression с помощью Nhibernate LINQ и верну новый IQueryable?
может быть что-то вроде этого:
public IQueryable<TagDTO> Tags
{
get
{
using (var session = factory.OpenSession())
{
return new ExceuteQueryable<TagDTO>(session.Query<TagDTO>());
//return session.Query<TagDTO>();
}
}
}
где ExceuteQueryable должен использовать свое дерево выражений для выполнения запроса, получения списка результатов и возврата нового iqueryable списка?