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