Как заставить Linq присоединяться к столам - PullRequest
0 голосов
/ 26 июля 2011

Я использую EF 4.1 и базу данных, которую я не проектировал.У меня есть две таблицы

TableA
[
  TableAKey,
  OtherField
]

TableB
[
  TableBKey,
  TableAKey, <-- Foreign Key
  OtherField
]

У меня проблема в том, что внешний ключ не обнуляется при удалении родительской записи.Это то, что я не могу контролировать и не могу изменить.При выборе из TableB я хочу исключить все строки с отсутствующими записями TableA.

В SQL это легко сделать с помощью простого INNER JOIN.Однако приведенное ниже linq не объединяет таблицы.Я думаю, это оптимизирует SQL.Приведенный ниже код генерирует SQL, который не упоминает TableA.Может быть, потому что я ничего не возвращаю.

(from b in TableB
join a in TableA on b.TableAKey equals a.TableAKey
where b.OtherField == something
select b).ToList();

Есть ли способ принудительного объединения SQL или лучший способ сделать это.

Ответы [ 2 ]

1 голос
/ 26 июля 2011

и это:

var qa = from a in TableA
         select a.id;
var q= from b in TableB
       where qa.Contains(b.TableAKey)

это должно привести к:

Select * from MyTable where idA in (Select id from tableA)
0 голосов
/ 26 июля 2011

сгенерированный sql много зависит от вашего провайдера БД ... попробовать

(from a in TableA
from b in TableB
where b.OtherField == something && a.TableAKey == b.TableAKey select b).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...