如果我从服务层公开 IQueryable,那么当我需要从多个服务获取信息时,数据库调用不是会减少吗?
例如,我想在一个页面上显示 2 个单独的列表,Posts
and Users
。我有两个单独的服务提供这些服务的列表。如果两者都提供 IQueryable,它们会联合在 1 个数据库调用中吗?每个存储库都为自己创建一个上下文。
最好想一个IQueryable<T>
作为等待运行的单个查询。所以如果你返回 2IQueryable<T>
实例并在控制器中运行它们,这与在它们自己的服务方法中单独运行它们没有任何不同。每次执行IQuerable<T>
为了获得结果,它将独立于其他查询自行运行查询IQuerable<T>
对象。
唯一一次(据我所知)如果两个服务调用之间有足够的时间数据库连接可能会关闭,那么它会产生影响,但是在服务调用之间需要相当长的时间才能关闭数据库连接。案子。
返回IQuerable<T>
到控制器仍然有一些用处,例如更容易处理分页和排序(因此排序是在控制器上完成的,而不是在服务层上完成的,服务层不一定关心数据如何排序或分页)。但这不是性能问题,人们会不同意是否最好在控制器中执行此操作(我见过信誉良好的开发人员这样做并给出了深思熟虑的原因)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)