【发布时间】:2016-02-06 11:19:00
【问题描述】:
我认为我在这里遗漏了一些基本的东西。
我有以下 EF 代码优先实体:公司和调制解调器。公司可以有一个调制解调器列表。
public class Company
{
public int ID { get; set; }
...
public virtual ICollection<Modem> Modems { get; set:}
}
public class Modem
{
public int ID { get; set; }
...
}
这会在Modem 表上生成一个列Company_ID 作为外键。
我想退回所有调制解调器及其公司 ID(如果有)。 在 SQL 中,我会执行以下操作:
select * from Modem m
left outer join Company c on
m.Company_ID = c.ID
我熟悉在 LINQ 中使用 .DefaultIfEmpty() 在 DB 优先而不是代码优先中进行左外连接。
我的困惑是我在 LINQ 中没有可用的 m.Company_ID 来执行连接,因为它是由 EF 自动生成的。
如何在 LINQ 中执行此连接?
【问题讨论】:
-
为什么你的
Modem类没有引用Company?喜欢public Company Company { get; set;}。 -
您尝试过类似... db.Companies.SelectMany(c => c.Modems) 吗?其中 db 是您的实体
-
@avi 听起来有些调制解调器没有链接到公司,因为 OP 想离开加入公司。
-
@juharr,正确的。某些调制解调器未与公司关联。
标签: c# linq ef-code-first outer-join