【发布时间】:2018-11-18 20:00:34
【问题描述】:
我的数据库 (MySql) 中的两个表之间存在多对多关系:
- 类别(id、name、id_parent)
- 声音(ID、名称)
一个类别可以有1个父类别,所以一个类别可以有很多子类别。如果一个类别至少有一个孩子,它就没有声音。我不允许声音和子类别一起使用。
因此,对于父类别,我想获取所有可能有子可能有子 (...) 的子,并且我想递归地计算所有子中的声音。
示例:
Cat -> (CCat1 -> CCCat11(2 个声音), CCat2 (5 个声音), CCat3 -> CCat31 -> CCCat311 -> (CCCCat3111 (10 个声音), CCCCat3111 (1 个声音))
没有深度限制,这就是为什么我需要一种“递归”方式来计算声音。
- 猫有 3 个孩子。
- CCat1 有 1 个孩子。
- CCat2 没有孩子。
- CCat3 有 1 个孩子有 1 个孩子有 2 个孩子。
Cat.nbSounds = 18
【问题讨论】:
-
如果您从数据库中获取此信息,您应该尝试创建一个存储过程。否则,您将不得不向客户端发送大量信息,而使用存储过程您只需发送最终数字。
-
@MrFox:如果您可以创建返回此数据的 LINQ 查询,那么您不会向客户端发送“大量信息”。
-
我有一种感觉,在这种情况下,单个 LINQ 查询将无法解决问题。我的第一个想法是编写一个递归方法来查找子类别并从中返回计数......但这反过来又是很多查询。
标签: c# linq-to-entities