我很确定这里有一个这样的例子,我无法找到它,因为我不知道确切的条款。所以,请善待。
问题应该很简单:
我有一个Azure SQL数据库,设计有点糟糕(即缺少外键等)。由于此时无法重新设计数据库,我必须通过查询手动处理关系。由于数据库也是我们软件的瓶颈,我必须尝试用尽可能少的数据库命中来完成查询。
我有实体A,B,C和D.实体A有几个实体B(与未注册的外键连接),实体B有几个实体C,实体C有几个实体D.
我拥有实体A的ID,并且希望尽可能最佳地返回所有连接实体的树,直到Ds。
开始:
from A in dbA.Where(e=>e.Id==IDParameter)
join B in dbB on A.Id equals B.AId into Bs
现在我需要对B中的B中的每个B执行此操作,并且再次使用C表示D.如果我采用obvoius方式,首先加入Ds和Cs,然后加入Bs和Cs,最后加入As和Bs,这意味着将所有Ds与Cs连接起来,然后全部......你明白了,直到我最终到达IDParameter过滤器。它似乎无效。
在单个查询中是否有正确的C#方式?