1 votes

Utilisation des expressions Linq pour découpler le côté client du DAL (qui est côté serveur)

Je n'ai pas pu trouver la réponse parmi les nombreux messages sur Linq, alors je suis ici. 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é en utilisant NHibernate. Autrement dit, il n'y a aucune référence à NHibernate dans les assemblages côté client, ni aucune abstraction de base de données. Le côté client parle strictement en termes d'entités, qui sont basées sur les objets d'affaires CSLA.

Je voudrais que le client puisse filtrer les entités affichées. Mon idée est de laisser le client construire une expression Linq, la transmettre au serveur, récupérer les données correspondant à l'expression en utilisant Linq to NHibernate et les renvoyer au client.

J'ai téléchargé et compilé Linq to NHibernate, mais malheureusement je ne trouve pas d'exemple qui découple les expressions Linq (côté client) de l'instance NHibernateContext correspondante (côté serveur). Tous les exemples semblent être du type

from c in db.Customers where ...

c'est-à-dire à la fois le contexte (db.Customers) et l'expression (where ...) dans une seule déclaration.

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

0voto

Andrew Siemer Points 7226

Jetez un coup d'œil à ce post. Vous pouvez utiliser ce concept pour transmettre des paramètres de requête et construire dynamiquement votre requête.

http://stackoverflow.com/questions/295593/linq-query-built-in-foreach-loop-always-takes-parameter-value-from-last-iteration

0voto

mark Points 7622

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

En fait, j'ai eu besoin de cela dans le cadre d'un problème plus large - spécifier une expression linq du côté client et l'utiliser pour récupérer des données du côté serveur. Mon poste aquí le décrit plus en détail.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X