gpt4 book ai didi

nhibernate - 使用 NHibernate QueryOver 进行后期评估

转载 作者:行者123 更新时间:2023-12-04 00:42:39 24 4
gpt4 key购买 nike

NHibernate.Linq 返回 IQueryable 给我延迟评估。这也可以用 QueryOver 完成吗?

更新:

我将使用它来定义大量只使用其中一部分的查询。因此,Future 不是解决方案,它将全部执行。

我喜欢 NHibernate.Linq 的 IQueryable (IEnumerable) 返回类型,如果从未使用过,它将永远不会执行查询。

最佳答案

首先,偶数QueryOver只是一组定义,稍后将转换为 SQL 语句。因此,直到您使用对

的引用
IQueryOver<Entity, Entity> ab = session.QueryOver<Entity>();

并且不调用 List<Entity>() ... 执行被推迟。这也是您可以使用分离查询的方式 16.1. Structure of a Query

QueryOver<Cat> query = QueryOver.Of<Cat>()
.Where(c => c.Name == "Paddy");

另一个强大的功能是 Future .这代表了一种非常简单的方法,如何将少量查询放在堆栈上,并且仅在需要第一个查询时......所有这些都被执行并作为一个批处理传递给数据库服务器。在这里阅读更多:NHibernate Futures

They essentially function as a way to defer query execution to a later date, at which point NHibernate will have more information about what the application is supposed to do, and optimize for it accordingly

最大的区别是它不能返回为IQueryable使用 QueryOver

编辑:扩展问题更新

同时 IQueryable<TEntiy>只能从 session.Query<TEntity>() 返回而不是在使用 QueryOverICriteriaHQL 时......使用 QueryOver 时无法达到相同的行为。 .

关于nhibernate - 使用 NHibernate QueryOver 进行后期评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14332966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com