C# 为什么包含没有任何效果?

C# 为什么包含没有任何效果?,c#,linq,entity-framework,extension-methods,C#,Linq,Entity Framework,Extension Methods,我正在执行以下LINQ查询,该查询有效,但不返回导航属性Person filled,我得到null 我不知道为什么,因为当我使用常规扩展方法时,比如_context.SharePeople.Includep=>p.Person,它就起作用了。清楚地描述了Include何时起作用和何时不起作用 关键部分是查询的形状,即所选列。如果在包含后形状发生了任何变化,则包含不再起作用 在查询中,形状更改四次,在以下语句部分: 来自q in_context.Cars:查询将只返回Car列 在_context.

我正在执行以下LINQ查询,该查询有效,但不返回导航属性Person filled,我得到null

我不知道为什么,因为当我使用常规扩展方法时,比如_context.SharePeople.Includep=>p.Person,它就起作用了。

清楚地描述了Include何时起作用和何时不起作用

关键部分是查询的形状,即所选列。如果在包含后形状发生了任何变化,则包含不再起作用

在查询中,形状更改四次,在以下语句部分:

来自q in_context.Cars:查询将只返回Car列 在_context.Shares中加入s:Car+共享列 在_context.SharePeople:Car+Share+SharePeople列中加入p。这是包含的内容。 选择p,仅共享人员列 一旦你意识到了这一点,补救办法很简单:

(from q ... select p).Include(p => p.Person)
当查询的形状看起来没有改变,但查询产生了一个投影时,这也适用。假设您必须选择新的{q,s,p}。这仍然会选择Car+Share+SharePeople列,与Include之前相同。但是,查询会生成匿名类型。这种类型本身没有任何导航属性可以由Include填充,所以Include也不做任何事情。这是。

清楚地描述了Include何时有效,何时无效

关键部分是查询的形状,即所选列。如果在包含后形状发生了任何变化,则包含不再起作用

在查询中,形状更改四次,在以下语句部分:

来自q in_context.Cars:查询将只返回Car列 在_context.Shares中加入s:Car+共享列 在_context.SharePeople:Car+Share+SharePeople列中加入p。这是包含的内容。 选择p,仅共享人员列 一旦你意识到了这一点,补救办法很简单:

(from q ... select p).Include(p => p.Person)

当查询的形状看起来没有改变,但查询产生了一个投影时,这也适用。假设您必须选择新的{q,s,p}。这仍然会选择Car+Share+SharePeople列,与Include之前相同。但是,查询会生成匿名类型。这种类型本身没有任何导航属性可以由Include填充,所以Include也不做任何事情。这是。

使用ste-fu方法,它不起作用,但通过它的变化,我能够使它起作用

我猜Gert Arnold回答了为什么它不工作,但既然我让它工作了,下面就是代码:

var sharePeople=Context.sharePeople.IncludePerson


return sharePeople.Wheres=>s.Shares.Car.CarId==CarId

使用ste-fu方法,它不起作用,但通过改变它,我能够使它起作用

我猜Gert Arnold回答了为什么它不工作,但既然我让它工作了,下面就是代码:

var sharePeople=Context.sharePeople.IncludePerson


return sharePeople.Wheres=>s.Shares.Car.CarId==CarId

您确定有符合条件s.ShareId等于p.ShareId的匹配项吗?是的,因为我有一条记录,但Personproperty为null,所有其他值都正常。我在SharePeople中有一个Personproperty。您的上下文配置是否正确。LazyLoadingEnabled=false?您确定有符合条件s.ShareId等于p.ShareId的项吗?是的,因为我有一条记录,但Personproperty为空,所有其他值都正常。我在SharePeople中有一个Personproperty。是否有您的上下文配置。LazyLoadingEnabled=false?加上一。这个答案很好,向我澄清了很多事情。多谢了。这个答案很好,向我澄清了很多事情。谢谢