Linq to sql 我的Linq to Sql查询和手动添加一些JOIN语句时出现了奇怪的问题

Linq to sql 我的Linq to Sql查询和手动添加一些JOIN语句时出现了奇怪的问题,linq-to-sql,join,Linq To Sql,Join,我的Linq到Sql模型包含一些导致生成的Sql代码留在外部联接的实体。这是正确的,因为表是如何建模的 但是,对于特定的查询,我实际上知道结果将始终存在于子表中。因此,我希望将SQL从左外部联接更改为内部联接 嗯。所以我想我可以手动指定连接。例如 from q in db.Foo join a in db.Bar on q.Id equals a.Id select q 现在,当我检查Linq生成的sql语句时,它既包含我创建的内部联接,也包含左外部联接 我如何重写默认的连接行为,以便只有我在

我的Linq到Sql模型包含一些导致生成的Sql代码留在外部联接的实体。这是正确的,因为表是如何建模的

但是,对于特定的查询,我实际上知道结果将始终存在于子表中。因此,我希望将SQL从左外部联接更改为内部联接

嗯。所以我想我可以手动指定连接。例如

from q in db.Foo
join a in db.Bar on q.Id equals a.Id
select q
现在,当我检查Linq生成的sql语句时,它既包含我创建的内部联接,也包含左外部联接

我如何重写默认的连接行为,以便只有我在linq语句中定义的才是使用的/去的/是法则


干杯:

对于您在上面发布的示例查询,除了Foo和Bar之间的单个连接之外,它不应该执行任何连接

您是否有可能按照以下方式进行操作:

from q in db.Foo
join a in db.Bar on q.Id equals a.Id
select new { q.SomeField, q.Bar.SomeOtherField }
如果是,请将其更改为:

from q in db.Foo
join a in db.Bar on q.Id equals a.Id
select new { q.SomeField, a.SomeOtherField }

嗨,克里斯托弗:呃,我不知道为什么第二个区块会有不同的连接结果?此外,您可能会认为,如果我指定联接,那么它将覆盖默认的联接映射。。对吗?不,一个查询可以多次连接到同一个表。第一个查询通过q.Bar.SomeOtherField引用有一个显式连接a和一个隐式连接。如果它试图自动“映射”连接,可能会发生各种有趣的副作用。