Обходные пути для использования пользовательских методов / методов расширения в LINQ to Entities

Я определил класс GenericRepository, который выполняет взаимодействие с базой данных.

 protected GenericRepository rep = new GenericRepository();

А в моих классах BLL я могу запросить базу данных следующим образом:

public List<Album> GetVisibleAlbums(int accessLevel)
{
    return rep.Find<Album>(a => a.AccessLevel.BinaryAnd(accessLevel)).ToList();  
}  

BinaryAnd - это метод расширения, который побитно проверяет два значения int. например, AccessLevel = 5 => AccessLevel.BinaryAnd (5) и AccessLevel.binaryAnd (1) оба возвращают значение true.

Однако я не могу использовать этот метод расширения в своих запросах LINQ. Я получаю следующее сообщение об ошибке выполнения:
LINQ to Entities не распознает метод Boolean BinaryAnd (System.Object, System.Object), и этот метод не может быть преобразован в выражение хранилища.

Также пробовали изменил его на собственный метод, но не повезло. Какие обходные пути?

Должен ли я получить все альбомы, а затем перебрать их в цикле foreach и выбрать те, которые соответствуют AccessLevels?

9
задан tshepang 31 July 2014 в 10:25
поделиться