Как объединить три таблицы, используя LINQ с взаимоисключающими внешними ключами? - PullRequest
0 голосов
/ 31 октября 2018

Я бьюсь головой об стену из-за этого ... мой 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();

Этот запрос возвращает ноль ... если я беру одно соединение, это дает мне половину результатов (например, таблицу А) ... Если я беру другое (и корректирую запрос), оно возвращает другую половину ( таблица с). В обоих случаях показана таблица B ...

Есть ли способ сделать это и получить ожидаемый результат?

Спасибо

...