没有延迟加载框架的大型查询结果



在一个小型DDD项目中,我的存储库返回实体数组。但是,似乎某些数据集会变得非常大,我想优化体系结构以限制通过存储库的内部数据映射器的对象数量。

我意识到的第一件明显的事情是我的存储库查询不必返回实体,在某些情况下,它们很可能会返回更方便的 id 列表。

一种非常常见的情况是由用户输入动态筛选的表。每次击键时,必须重新加载列表,但只要只显示前 10 行,每个第一个字符都会生成数千个查询结果。

我正在尝试学习如何处理这个问题,而不会将自己嫁给一些具有延迟加载的特定框架。此外,我开始思考表中显示的对象排列中有多少进入存储库,以及有多少进入其他地方。理想情况下,我想避免在我的存储库之外暴露查询结果限制的需求。

我应该评估哪种方法来处理大型数据集,而无需在存储库之外使用任何特定框架?

我确实有一个自定义 Query 类,它只包装不同数据库和框架的查询结果对象。我考虑过在初始获取的限制内,如果需要更多数据,则会自动扩展,但是如果结果在外部更新,则按部分获取可能会很痛苦。

所有这些都让我觉得我需要某种类型的智能数组,并带有一些自定义的延迟加载。但是,我不确定在DDD模式中哪一个是正确的位置。

限制获取的行数没有错。如果需要 10 个实体,则应仅获取 10 个实体。您的视图图层可能会要求提供 X 个实体。

关于仅获取 ID,这不是真正的 OOP/DDD 方式,但由于您的平台受到限制,您可以获取 ID=>name 数组。

例如

findNamesByPattern(string pattern, int limit)

返回:ID=>名称数组

最新更新