我有一个通用的存储库模式,我正在尝试根据FkApplicationId
加载一组代理商,如果它IsEnabled == true
我的模型看起来像这样:
我认为这很容易,但我无法创建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));
}
答案 0 :(得分:4)
没有实体属性,因为AppAgencies
上的Agency
属性是导航属性。
我认为这就是你想要的:
public IEnumerable<Agency> GetAllEnabledAgencies(int applicationId)
{
return _agencyRepository.GetMany(x => x.AppAgencies.Any(y => y.IsEnabled));
}
英文:
获取所有代理机构,其中启用了至少一个 AppAgency。
如果你想:
获取所有代理商,其中所有 AppAgency已启用。
将Any
更改为All
。