Несколько слоев внешних ключей в запросе LINQ - PullRequest
2 голосов
/ 23 февраля 2010

Если у меня есть Table3 с FK, указывающим на Table2, с FK, указывающим на Table1, то, что я вижу через intellisense, это то, что я могу ссылаться на Table2 из Table3, но я не могу перейти к Table3.Table2.Table1, он идет только один слой глубокий.

from t3 in Table3
where t3.t2.property == "some value" && t3.t2.t1.property == "some other value"
select t3.t2.t1;

Это, по сути, то, что я хочу сделать, но я могу ссылаться только на t2, но не на t1, на который ссылается t2.

Должен ли я сделать это:

from t3 in Table3
from t1 in Table1
where t3.t2.property == "some value" && t1.property == "some other value"
select t1;

1 Ответ

3 голосов
/ 23 февраля 2010

Вы можете объединить все таблицы:

from t3 in Table3
join t2 in Table2 on t3.Table2_FK equals t2.ID
join t1 in Table1 on T2.Table1_FK equals t1.ID
where t2.property == "some value" && t1.property == "some other value"
select t1;

(редактирование)

Я не углубляюсь ни на один уровень. На самом деле ваш первый пример должен работать. Конечно, ваши отношения должны быть от N до 1:

Table3 (n) --- (1) Table2 (n) --- (1) Table1

учитывая t3 из Table3 вы можете сделать:

t3.Table2.Table1

У вас есть правильная связь между Table2 и Table1 в файле .dbml?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...