如何强制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连接的方法或更好的方法?
欢呼
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();