如何强制Linq连接表

本文关键字:连接 Linq 何强制 | 更新日期: 2023-09-27 18:03:39

我正在使用EF 4.1和一个我没有设计的数据库。我有两张表

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

我遇到的问题是,当父记录被删除时,外键不会被取消。这是我无法控制也无法改变的事情。当从表b中选择时,我想排除所有缺少表a记录的行。

在SQL中,使用一个简单的INNER JOIN很容易做到这一点。然而,下面的linq不连接表。我猜它在优化SQL。下面的代码生成没有提到TableA的SQL。可能是因为我没有从中返回任何东西。

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

是否有强制SQL连接的方法或更好的方法?

欢呼

如何强制Linq连接表

and this:

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)

生成的SQL很大程度上取决于您的数据库提供程序…试着

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