Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Linq到实体循环左外部联接_Sql_Linq_Linq To Entities - Fatal编程技术网

Sql Linq到实体循环左外部联接

Sql Linq到实体循环左外部联接,sql,linq,linq-to-entities,Sql,Linq,Linq To Entities,我对Linq to实体有以下问题 图表: Linq到实体查询(尚未完成): 生成的SQL: SELECT [Extent1].[AnlassID] AS [AnlassID], CASE WHEN ([Extent2].[BeurteilungID] IS NULL) THEN 0 ELSE [Extent2].[BeurteilungID] END AS [C1], CASE WHEN ([Extent4].[PonyID] IS NULL) THEN 0 ELSE [Extent4

我对Linq to实体有以下问题

图表:

Linq到实体查询(尚未完成):

生成的SQL:

SELECT 
[Extent1].[AnlassID] AS [AnlassID], 
CASE WHEN ([Extent2].[BeurteilungID] IS NULL) THEN 0 ELSE 
[Extent2].[BeurteilungID] END AS [C1], 
CASE WHEN ([Extent4].[PonyID] IS NULL) THEN 0 ELSE [Extent4].[PonyID] END
AS [C2], 
[Extent4].[Name] AS [Name], 
[Extent3].[PonyName1] AS [PonyName1] 
FROM    [sspv].[Anlaesse] AS [Extent1] 
LEFT OUTER JOIN [sspv].[Beurteilung] AS [Extent2] ON [Extent1].[AnlassID] 
= [Extent2].[AnlassID] 
INNER JOIN [sspv].[Rangliste] AS [Extent3] ON [Extent1].[AnlassID] = 
[Extent3].[AnlassId] 
LEFT OUTER JOIN [sspv].[Pony] AS [Extent4] ON [Extent3].[PonyId] =  
[Extent4].[PonyID] 
WHERE 67 = [Extent1].[AnlassID] 

问题是我无法在Pony和Beurteilung之间添加左侧外部联接,因为所有表都已在我的查询中“使用”。如果不这样做,结果是错误的,因为它会为每匹小马返回all Beurteilung。

假设您想将
小马
左连接到
Beurteilung
。假设两者都有一个
PonyId
属性。这样的子句将充当内部联接:

where p.PonyId == b.PonyId
这样的子句将充当左连接

where b == null || p.PonyId == b.PonyId

然而,您发现这很难,因为看起来您并没有正确地使用实体框架。您是否映射了任何导航属性或集合?若你们还并没有添加它们,因为这是EF的一个点。如果有,那么就不需要使用内部联接或左联接;您只需遍历导航属性。

是否尝试添加
where
子句以将
小马
匹配到
Beurteilung
?如果不知道您想要加入这两个实体的内容,就很难提供解决方案。谢谢您的回复。是的,我试过了,但它的行为类似于innerjoin,因此没有返回任何内容。结果Schoull将从Anlass和Pony处返回所有Rangliste以及详细信息(如果存在一匹小马和关于Beurteilung的详细信息,如果给定的Anlass存在一匹小马,并且这匹小马有一个Beurteilung。嗨,Tim,谢谢你的回复。就是这样!我不知道其中b==null | | p.PonyId==b.PonyId被解释为EF的左外连接。现在它似乎起作用了。是的,我知道某种奇怪的设计,但不幸的是s是我必须使用的传统数据库,不可能进行修改。您不需要修改数据库来添加导航属性。您需要修改实体框架上下文。
where b == null || p.PonyId == b.PonyId