gpt4 book ai didi

linq - 如果我从我的服务层公开 IQueryable,如果我需要从多个服务中获取信息,数据库调用会不会更少?

转载 作者:行者123 更新时间:2023-12-02 06:42:51 25 4
gpt4 key购买 nike

如果我从我的服务层公开 IQueryable,如果我需要从多个服务中获取信息,数据库调用会不会更少?

例如,我想在一个页面上显示 2 个单独的列表,PostsUsers。我有 2 个单独的服务提供了这些服务的列表。如果两者都提供 IQueryable,它们是否会在 1 个数据库调用中联合?每个存储库都为自己创建一个上下文。

最佳答案

最好想一个IQueryable<T>作为等待运行的单个查询。所以如果你返回 2 IQueryable<T>实例并在 Controller 中运行它们,这与在它们自己的服务方法中单独运行它们没有什么不同。每次执行 IQuerable<T>为了获得结果,它将独立于其他 IQuerable<T> 自行运行查询对象。

如果两次服务调用之间有足够的时间数据库连接可能会关闭,那么唯一一次(据我所知)它会产生影响,但您需要在服务调用之间花费大量时间事实就是如此。

返回 IQuerable<T>到 Controller 仍然有一些用处,例如更容易处理分页和排序(所以排序是在 Controller 上完成的,而不是在服务层上完成的,服务层不一定关心数据是如何排序或分页的)。但这不是性能问题,人们会不同意是否最好在 Controller 中执行此操作(我已经看到有信誉的开发人员这样做并给出了深思熟虑的原因)。

关于linq - 如果我从我的服务层公开 IQueryable,如果我需要从多个服务中获取信息,数据库调用会不会更少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156775/

25 4 0