我知道我的 DB 层返回其 DTO 对象的 IQueryable。我使用 NHibernate,它支持 Linq。但问题是,当我的数据库层离开时,我必须关闭会话,因此 IQueryable 不再工作。但我也无法返回列表,因为这样查询将不会在 SQL Server 上执行。
那么我是否有可能返回一个 IQueryable,使用 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?