Skip to main content
 首页 » 编程设计

c#之EF 查询以获取所有子集合的并集

2024年01月02日29qq78292959

假设我有一个像这样的 Entity Framework 4.2 类:

class Company 
{ 
    public int ID { get; set; } 
    public ICollection<Employee> Employees { get; set; } 
} 

我有这样的收藏:

public ICollection<Company> Companies { get; set; } 

在整个 Companies 集合中构建所有 员工列表的有效方法是什么?我不需要担心重复。

注意:我尝试在没有 Entity Framework 上下文的情况下执行此操作——仅使用 Companies 集合。但是,如果这会导致巨大的性能损失,我可以在必要时获取上下文。

请您参考如下方法:

我不确定您要实现的目标是什么,但是要查询您将要使用 DbContext 的数据。

您可以通过设置 LazyLoadingEnabled 将上下文配置为自动加载相关实体为真,或显式,即在查询数据时,使用 Include 包含员工的路径EF > 4.0 提供的扩展。

一旦所有公司都在那里,您就可以使用 SelectMany 对其进行 linq方法。我没有检查过,但 AFAIK,LINQ to SQL 将按需将查询作为一组执行。

如果您坚持不公开您的 DbContext 或者如果您使用不同的底层上下文,我建议您将它包装在一个存储库中,该存储库在后面执行 SelectMany,但是您的 friend 是Include 和 SelectMany。