Problemumgehungen für die Verwendung von benutzerdefinierten Methoden/extension Methoden in LINQ to Entities

Ich habe eine GenericRepository Klasse, die die db-Interaktion.

 protected GenericRepository rep = new GenericRepository();

Und in meine BLL-Klassen, kann ich die Abfrage der db wie:

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

BinaryAnd ist eine Erweiterung Methode, die prüft, zwei int-Werte bit für bit. z.B. AccessLevel=5 => AccessLevel.BinaryAnd(5) und AccessLevel.binaryAnd(1) beide true zurück.

Allerdings kann ich nicht mit dieser Erweiterung Methode in meiner LINQ-Abfragen. Ich bekomme einen runtime error wie folgt:

LINQ to Entities does not recognize the method 'Boolean BinaryAnd(System.Object, System.Object)' method, and this method cannot be translated into a store expression.

Habe auch versucht es zu ändern, um eine benutzerdefinierte Methode, aber kein Glück. Was sind die workarounds?

Sollte ich alle Alben und dann iterieren Sie durch eine foreach-Schleife und wählen Sie jene, die mit dem AccessLevels?

InformationsquelleAutor Kamyar | 2011-02-01
Schreibe einen Kommentar