2009-11-11 4 views
1

J'ai un client C# .NET Silverlight 3.0 exécutant des services RIA avec un modèle EF. J'essaye de mettre en place un système de recherche avancé sur le client de sorte que l'utilisateur puisse dire, je veux que le champ (propriété) "Foo1" ait la valeur "Bar1", etc.Comment passer des paramètres de recherche dynamiques à partir du client via les services RIA?

Je voudrais utiliser une approche flexible et dynamique similaire à this one. Le problème est que je ne peux pas passer IQueryable en tant que paramètre ServiceOperation ou en tant que paramètre de service de domaine. C'EST À DIRE. Cela ne fonctionne pas:

[ServiceOperation()] 
public int GetFooCount(string category, IQueryable<Foo> search) 
{ 
    int fooCount; 
    if (search != null) 
    { 
     IQueryable<Foo> filteredFooSet = this.Context.FooSet.Intersect(search); 
     fooCount = (from foo in filteredFooSet 
        where foo.Category == category 
        select foo).Count(); 
    } 
    else 
    { 
     fooCount = (from foo in this.Context.ContactSet 
        where foo.Category == category 
        select foo).Count(); 
    } 

    return fooCount; 
} 

Quelqu'un peut-il suggérer soit un moyen d'obtenir cette approche au travail ou à une autre approche (mieux)? L'objectif est un contrôle de recherche flexible qui peut être appliqué à plus d'un type d'entité spécifique.

Répondre

1

Je pense que votre meilleur pari serait d'utiliser the Dynamic Linq Library. À l'aide de cette bibliothèque, vous pouvez transmettre vos clauses where sous forme de chaîne, puis utiliser la bibliothèque pour l'utiliser par rapport à vos données EF.

+0

Cela a fonctionné !! Merci beaucoup! –

Questions connexes