Where相关实体的条款

时间:2011-08-22 23:48:12

标签: entity-framework repository-pattern poco

我有一个通用的存储库模式,我正在尝试根据FkApplicationId加载一组代理商,如果它IsEnabled == true

我的模型看起来像这样: enter image description here

我认为这很容易,但我无法创建where子句来过滤结果。我无法看到AppAgencies的属性来写一个条件,这是我能得到的:

public IEnumerable<Agency> GetAllEnabledAgencies(int applicationId)
{
    return _agencyRepository.GetMany(m => m.AppAgencies.//No Entity Properties are here);
}

从我从上面调用的存储库:

public virtual IEnumerable<T> GetMany(Expression<Func<T, bool>> where)
{
    return _dbSet.Where(where).ToList();
}

感谢RPM1984,解决方案:

代理商被多个应用程序使用,他们需要能够为每个应用程序启用/禁用每个应用程序。所以我使用AppAgency表将该req绑定在一起。因为我不想每次引入新的应用程序时都要向Agency实体添加新列。

public IEnumerable<Agency> GetAllEnabledAgencies(int applicationId)
{
     return _agencyRepository.GetMany(x => x.AppAgencies.Any(y => y.IsEnabled && y.FkApplicationId == applicationId));
}

1 个答案:

答案 0 :(得分:4)

没有实体属性,因为AppAgencies上的Agency属性是导航属性。

认为这就是你想要的:

public IEnumerable<Agency> GetAllEnabledAgencies(int applicationId)
{
    return _agencyRepository.GetMany(x => x.AppAgencies.Any(y => y.IsEnabled));
}

英文:

  

获取所有代理机构,其中启用了至少一个 AppAgency。

如果你想:

  

获取所有代理商,其中所有 AppAgency已启用。

Any更改为All