使用LINQ查询对递归关系进行聚合计数

4

抱歉,我想不出更好的标题! :)

我有一个名为Process的表格,它具有递归关系来定义Process-*Subprocess

现在,每个Process可以附加一个或多个指标:Process-*Metric

因此,我的Process表格将如下所示:

PROCESS
-------
ID
PID (fkey on Process.ID)

我的度量表如下所示:
METRIC
------
ID
PID (fkey on Process.ID)

使用LINQ和EF,我能够构建一个查询来返回以下内容的总和吗:
  • 与一个进程相关联的度量计数
  • 与该进程的所有子进程相关联的度量计数
如果可能的话,我正在寻找一种方法以单个对数据库的调用返回此信息。
谢谢!
克里斯
1个回答

1

基本上你有两个选择。

  1. 将两个表都读入内存并在代码中处理结果。适用于小集合。
  2. 使用递归CTE创建一个视图,并在EF中映射该视图。与该视图连接。写起来更复杂,但对于大集合而言性能最佳。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接