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

时间:2013-09-11 06:44:48

标签: architecture domain-driven-design lazy-loading ddd-repositories

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

我意识到的第一个显而易见的事情是我的存储库查询不必返回实体,在某些情况下,它们可以很好地返回更方便的id列表。

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

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

我应该评估哪种方法来处理大型数据集而不使用我的回购之外的任何特定框架?

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

这一切让我觉得我需要一些带有一些自定义延迟加载的智能阵列。但是我不确定哪个是DDD模式中适合它的地方。

1 个答案:

答案 0 :(得分:0)

限制获取的行数没有任何问题。如果需要10个实体,则应该只获取10个实体。您的视图层可能会要求X个实体。

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

E.g。

findNamesByPattern(string pattern, int limit)

return:ID => name

的数组