实体框架和自我引用表
-
25-10-2019 - |
题
我需要一个数据库,该数据库从一个名为“用户”的表开始,该表需要自我引用本身,并且将具有非常深的相关对象图。它需要像下图的左侧(忽略右侧)。
我还需要向上和向下遍历此图,以计算百分比,总数等。换句话说,在某些情况下,我需要在整个图形上浏览整个图。
这是可能的,/或如何完成?可以在LINQ语句中直接完成遍历吗?例子?
编辑:我基本上是在尝试创建网络营销方案,并需要计算每个人的收入。
例子:
- 为了能够在特定用户下为每个用户的总销售量平衡(因此每个用户都会有某种收入)。
- 计算树木一定级别的佣金(例如,如果顶级人士下方有3个人,每个人每人以1美元的价格出售产品,而佣金为50%,则为$ 1.50。)
- 如果我在上面的图像(左侧)查询“ b”,我应该得到“ b,h,i,j,n,o”
希望这会有所帮助:S
解决方案
您不能以一种可以转化为单个SQL查询的方式(或它们的常数计数),而无法使用LINQ遍历整个树。您可以通过一个查询每个级别的查询或一个查询来完成,这仅限于特定的级别计数(但是,这种查询在许多级别上会变得很大)。
在T-SQL(我假设您正在使用MS SQL Server)中,您可以使用 递归公共表格表达. 。应该可以将其放入存储过程中,您可以使用LINQ来获取所需的信息。
总而言之,您的选择是:
- 不要使用linq,只有与递归CTE的SQL
- 在LINQ的存储过程中使用递归CTE
- 使用Linq,为每个级别创建一个查询
- 使用ugly linq查询限制到仅几个级别
其他提示
我知道这已经很晚了,但是如果您查看定向的图形算法,则可以绕过递归问题。查看这两篇文章:
http://www.sitepoint.com/hierarchical-data-database/
http://www.codeproject.com/articles/22824/a-model-to-prepresent-directed-caclic-graphs-dag-o
不隶属于 StackOverflow