实体框架4(使用过滤器配置的关联)

时间:2011-10-06 16:11:18

标签: c# .net entity-framework ado.net

我有一个包含调查实体集合的用户实体。我希望关联包含关系的过滤器,例如'IsCompleted',所以每当我急切地加载(或延迟加载)集合时,就会发生这种过滤。

这是我们可以控制的吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果您使用的是支持视图的数据库后端,则可以考虑将该视图用作调查实体集合的源。利用数据库的强大功能为您进行过滤。

答案 1 :(得分:0)

加载实体的关联总是只获取所有关联,无论是因为您在初始查询期间使用了Include,事后称为Load,还是延迟加载导致它。导航属性的概念类型假设了这种行为。

E.J. Brennan's answer会运作良好。如果您不关心在幕后加载所有调查(由于性能/内存原因或其他原因),那么您也可以考虑通过实体上的部分类定义创建一个单独的属性,该实体返回已过滤的列表。

public partial class User
{
    public ICollection<Survey> CompletedSurveys
    {
        get { return Surveys.Where(s => s.IsCompleted); }
    }
}