如何使用带有互斥外键的LINQ连接三个表?

时间:2018-10-30 21:07:56

标签: sql sql-server asp.net-mvc linq-to-sql entity-framework-6

我正在为此撞墙...我的SQL并不是最好的,所以我无法解决它,也找不到这个问题的答案...

问题是:如果中间表的键是互斥的,如何使用查询语法(LINQ)联接三个表?我的意思是...我有一个表A,它的外键指向B ... B有一个外键,指向A,另一个则指向C ...,而C指向B。在表B中,如果FK到A不为空,则FK到C为空(反之亦然),并且在这些关系之间有一个链接键。

就像A的键是输入,B的键正在退出,Linking Key是产品一样。他们不能在同一条直线上,但是两个不同的动作具有相同的乘积。目的是获取有关A + B + C的信息。

例如,使用这些表:

Tables Example

如果我想了解有关(表A)ID ='a'的信息,则查询应返回

enter image description here

或者提供类似的东西之后可以工作的东西...

我有:

vM_Report_Aux = (from ctbr in db.Rec_Cont_Mov
                 join rM in db.Rec_Mov on ctbr.Rec_ContabID equals rM.Rec_ContabID
                 join brm in db.Rec_B_Mov on rM.RecID equals bRM.RecID

                 select new 
                         {
                            ID = ctbr.ID,
                            Val = rM.Val
                         }).OrderBy(q => q.ID).ToList();

此查询返回null ...如果我进行一个连接,它将给我一半的结果(例如,表A)...如果我进行另一个(并调整查询),则它返回另一半(表C)。两者都显示了表B ...

有什么办法可以达到预期效果吗?

谢谢

0 个答案:

没有答案