2

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

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

我有这样的收藏:

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

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

注意:我正在尝试在没有实体框架上下文的情况下执行此操作——只使用Companies集合。但是,如果这会对性能造成巨大影响,我可以在必要时获取上下文。

4

1 回答 1

0

我不确定您要实现什么,但要查询您想要使用的数据DbContext

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

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

如果您坚持不公开您的 DbContext 或者如果您使用不同的底层上下文,我建议您将其包装在一个存储库中,该存储库在SelectMany之后执行,但您的朋友是Includeand SelectMany.

于 2012-02-13T06:56:55.360 回答