gpt4 book ai didi

c# - NHibernate 惰性问题

转载 作者:行者123 更新时间:2023-11-30 17:12:47 25 4
gpt4 key购买 nike

public IEnumerable<UserReadNews> GetLatestUserReadNews(IEnumerable<string> userIds)
{

IQuery query = Session.CreateQuery("from UserReadNews as j where j.FacebookUser_id in (:userIds)");
query.SetParameterList("userIds", userIds );
return query.List();
}

我有这个方法,我想尽可能延迟地返回这些数据,因为我要确定要显示的数据然后停止。我不希望针对整个表执行整个查询。

我关心的是 List() 方法。这是懒惰还是渴望?

我可以从另一个方法调用此方法并在完成我需要的操作后yield break吗?

最佳答案

我同意@CSharper 关于仅查询您绝对需要的内容的观点。

如果在优化之后你仍然需要让它尽可能地懒惰,使用 ICriteria.Future<T>()而不是 ICriteria.List<T>() :

public IEnumerable<UserReadNews> GetLatestUserReadNews(IEnumerable<string> userIds)
{
IQuery query = Session.CreateQuery("from UserReadNews as j where j.FacebookUser_id in (:userIds)");
query.SetParameterList("userIds", userIds );
return query.Future<UserReadNews>();
}

Future将为您提供一个带有延迟查询的实际 IEnumerable,而不是立即提供整个列表。如果有机会,它有时也会优化查询。

关于c# - NHibernate 惰性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392624/

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