Где оговорка к связанной сущности - PullRequest
0 голосов
/ 23 августа 2011

У меня есть общий шаблон репозитория, и я пытаюсь загрузить коллекцию агентств на основе 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, чтобы связать это требование.потому что я не хочу добавлять новый столбец к сущности Agency каждый раз, когда появляется новое приложение.

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

1 Ответ

4 голосов
/ 23 августа 2011

Свойства сущности отсутствуют, поскольку свойство AppAgencies в Agency является навигационным свойством.

I думаю, это то, что вы хотите:

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

На английском языке:

Получить все агентства, где включен хотя бы один AppAgency.

Если вы хотите:

Получить все агентства, где все AppAgency включено.

Изменить Any на All.

...