Utilisation d'expressions LINQ pour découpler le côté client à partir de DAL (qui est le côté serveur)

StackOverflow https://stackoverflow.com/questions/1085400

Question

Je n'ai pas pu trouver la réponse parmi les nombreux messages sur Linq, donc je suis. Nous avons une application client-serveur, où le côté client n'a absolument aucune connaissance du DAL réel du côté serveur, qui est d'ailleurs implémenté à l'aide de Nhibernate. Cela signifie qu'il n'y a pas de références à NHIBERNATE à partir des assemblages côté client, ainsi qu'à aucune abstraction de base de données. Le côté client parle strictement en termes d'entités, qui sont basées sur des objets commerciaux CSLA.

Je voudrais laisser le côté client filtrer les entités affichées. Mon idée est de laisser le côté client construire une expression LINQ, de le transmettre du côté serveur, de récupérer les données correspondant à l'expression à l'aide de LINQ à nhibernate et de la retourner au client.

J'ai téléchargé et compilé LINQ sur Nhibernate, mais malheureusement, je ne trouve pas d'exemple qui découple les expressions Linq (AKA Client Side) de l'instance NHiberNateContext respective (AKA Server Side). Tous les exemples semblent être comme

from c in db.Customers where ...

c'est-à-dire à la fois le contexte (db.Customers) et l'expression (où ...) dans une instruction.

Est-il possible de les découpler? Merci.

Était-ce utile?

La solution 2

Cela s'avère assez facile - from c in db.Customers where linq-exp select c est équivalent à db.Customers.Where(linq-exp).

J'ai en fait besoin de cela dans le cadre d'un problème plus large - spécifiant une expression LINQ côté client et l'utiliser pour récupérer des données côté serveur. Mon message ici Le décrit à plus de détails.

Autres conseils

Jetez un œil à ce post. Vous pouvez utiliser ce concept pour passer dans les paramètres de requête, puis construire dynamiquement votre requête.

La requête Linq intégrée en boucle foreach prend toujours la valeur des paramètres de la dernière itération

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top