限制涉及多个数据对象的查询结果

时间:2019-05-03 02:19:38

标签: c# web

我正在创建一个从多个数据对象返回结果的网页,并且每个对象都有自己的数据访问实现。假设objectA可以返回1,000,000个对象,objectB可以返回2,000,000个对象,具体取决于用户要过滤的内容。我想将搜索结果限制为最大10000,但是搜索条件可能来自objectA或objectB或两者都来自。

假设用户搜索一个仅在objectA中存在该字段的过滤器。这意味着我必须过滤objectA,然后在代码中“加入”以获得相应的objectB。如果精确返回了10000个objectA,那可能意味着返回了20000个对象B。这将导致搜索结果中的20000个对象违反10000个限制。

您将如何实现此算法,其中最多返回10000个对象。之所以需要这样做,是因为我们不想使应用程序服务器的内存中有太多对象,而多个用户可能会导致内存过载。

过去,我们只发出数据库查询,该查询将使我们获得使用SQL连接到objectB的objectA的计数,从而得到一个计数。但是,让我们假设我们不能再使用SQL,只能使用每个对象的数据访问层访问该对象,然后在代码中将它们“连接”在一起。这是错误的方法吗?

// Need to limit the results of objectAList "joined" to objectBList to 10k to reduce memory consumption
List<objectA> objectAList = objectADataaccess.Query(filters[]);
List<objectA> objectBList = objectADataaccess.Query(filters[]);

List searchResults = objectAList.Join(objectBList, "some matching criteria");

0 个答案:

没有答案