编程语言
首页 > 编程语言> > c# – 实体框架和自引用表

c# – 实体框架和自引用表

作者:互联网

我需要一个以一个名为“User”的表开头的数据库,该表需要自我引用,并且会有一个非常深的相关对象图.它需要像下面图像的左侧(忽略右侧).

我还需要向上和向下遍历此图表以计算百分比,总计等.换句话说,在某些情况下我需要遍历整个图表.

这是可能的和/或它是如何完成的?可以在LINQ语句中直接进行遍历吗?例子?

编辑:
我基本上试图创建一个网络营销场景,并需要计算每个人的收入.

例子:

>能够计算特定用户下每个用户的总销售额(因此每个用户都会有某种收入).
>计算树木某一级别的佣金(例如,如果顶级人员下面有3人,每人以1美元的价格出售产品,佣金为50%,则会有1.50美元.)
>如果我查询上面(左边)的图像为“B”,我应该得到“B,H,I,J,N,O”

希望这有助于:S

解决方法:

您不能仅使用LINQ遍历整个树,这种方式可以转换为单个SQL查询(或者它们的常量计数).您可以使用每个级别的一个查询或使用一个查询来执行此操作,该查询仅限于特定的级别计数(但是这样的查询会在很多级别上变得非常大).

在T-SQL中(我假设您使用的是MS SQL Server),您可以使用recursive common table expressions执行此操作.应该可以将其放入可以从LINQ使用的存储过程中以获取您实际需要的信息.

总而言之,您的选择是:

>不要使用LINQ,只使用递归CTE的SQL
>在LINQ的存储过程中使用递归CTE
>使用LINQ,为每个级别创建一个查询
>使用丑陋的LINQ查询仅限于几个级别

标签:c,database,entity-framework,entity-framework-4-1,tree
来源: https://codeday.me/bug/20190630/1337372.html