我知道您可以通过调用 .ToFuture<>() 扩展方法来执行 Linq to NHibernate 查询作为未来。但是,我没有加载映射实体,而是直接将数据加载到 DTO 中。所以你会得到类似的东西:
var results = (from e in session.Query<Entity>()
where e.Reference.Id == someId
orderby e.Name
select new Dto
{
Id = e.Id,
Name = e.Name,
// ...
}).ToFuture<Dto>();
这不像我想要的那样工作(我敢说是预期的)。我现在收到一个错误:The value "System.Object[]" is not of type "Entity" and cannot be used in this generic collection.
如果我删除.ToFuture()
它确实有效,但查询没有批处理。
我知道您可以使用 QueryOver API 来做到这一点,我只是更喜欢 Linq to NH,因为它的代码更加简洁。