Je construis ma requête en utilisant PredicateBuilder depuis LinqKit. c'est génial et fait exactement ce que je cherche.Problèmes de moulage d'EntityFramework
Pour rendre mon code plus réutilisables (tables et vues) i créé une classe de constructeur générique prédicat:
public class LocalPredicateBuilder<T> where T : IResort
...
var predicate = PredicateBuilder.True<T>(
qui expose la méthode BuildPredicate. Je peux l'utiliser comme ceci:
var predicate = new LocalPredicateBuilder<Resort>().BuildPredicate();
var resorts = _entities.Resorts.Where(predicate).ToList();
mais lorsque je tente de le faire, je reçois cette erreur d'exécution (BTW objets entité mise en œuvre IResort): Impossible de lancer le type « ConsoleApplication1.Entities.Resort » à tapez 'ConsoleApplication1.Entities.IResort'. LINQ to Entities ne prend en charge la coulée Entity Data Model types primitifs
j'ai essayé casting (ne fonctionne pas):
var rlist = eq.Cast<Resort>().ToList();
Toute autre façon que je peux contourner ce problème de casting?
MISE À JOUR
ne pas avoir beaucoup de chance d'obtenir des prédicats de travailler en utilisant des interfaces .. donc je solved my problem by going with POCOs.
j'ai. ne serait pas en mesure de compiler autrement –
ok alors c'est le problème que j'ai ajouté après ma modification. –
la requête renvoie effectivement la liste alors il devrait être possible de faire cette distribution. le quelque chose est seulement utilisé pour créer des prédicats utilisés dans où requête. –