【问题标题】:LINQ to Entities, how to return all records from the Parent table?LINQ to Entities,如何从父表中返回所有记录?
【发布时间】:2009-02-11 09:54:02
【问题描述】:

我无法使用 Linq to Entities 从父表中选择所有记录。

这是一个简单的数据库设计(下图):

Image Link(死链接)

这是我想要使用 Linq to Entities 或 Linq to SQL 的确切输出(下图):

Image Link(死链接)

当我使用 Linq to Entities 或 Linq To Sql 时,我只能从具有外键关系的子表中获取记录。如上所示,我无法获取空值。

我希望像使用 left outer join 时一样显示空值。

感谢您的帮助。

【问题讨论】:

  • 您的问题中似乎缺少示例输出...

标签: linq-to-entities left-join


【解决方案1】:
from entity in MyContext.EntityType.Include("ChildEntitiesNavigationPropertyName")
select entity;

这将返回 EntityType 的所有实例,以及 ChildEntitiesNavigationPropertyName(如果/如果存在)。对于表格形式,请使用匿名类型:

from entity in MyContext.EntityType.Include("ChildEntitiesNavigationPropertyName")
select new {ParentProperty = entity.ParentProperty, 
            ChildProperty  = entity.ChildEntitiesNavigationPropertyName.ChildProperty};

对于 1..* 属性:

from entity in MyContext.EntityType.Include("ChildEntitiesNavigationPropertyName")
from child in entity.ChildEntitiesNavigationPropertyName.DefaultIfEmpty()
select new {ParentProperty = entity.ParentProperty, 
            ChildProperty  = child.ChildProperty};

【讨论】:

  • 当我做例子时,它只是说 childproperty 没有定义。尽管在 entity.ChildEntitiesNavigationPropertyName 中从 Child 开始工作,但这并没有给我想要的 Null 记录。
  • 那么您必须使用 1..* 属性。在这种情况下,请使用 group by 加入。我将更新示例。
  • 顺便问一下,你看到我的图片了吗?图片在我编辑问题时显示,但在查看问题时看不到。
  • 没有。我猜,因为我看不到它们。
  • 好的,把链接放到图片上,不知道为什么图片没有显示。感谢您的所有帮助。
【解决方案2】:

我很确定您可以从员工中进行选择,然后在 LINQ 中进行左连接,类似这样(我在这台机器上没有 VS):

var results = from e in dbContext.Employees join s in dbContext.Sales on e.EmployeeID equals s.EmployeeID select new { e, s };

您可能想要选择您想要的列。希望它能给你带来你想要的结果。

【讨论】:

  • 如果明天上班还没有回复,我会继续处理的。但是,您需要将员工与销售人员结合起来,而不是尝试从销售人员到员工工作。
  • 领导表是Employee,简直不敢相信一个简单的查询很难。感谢您的帮助。
  • 我完全忘记了!现在让我看看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多