假设我有一个像这样的 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。
