El uso de LINQ Expresiones para desacoplar el lado del cliente de DAL (que es del lado del servidor)

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

Pregunta

No pude encontrar la respuesta entre los muchos puestos en LINQ, así que aquí estoy. Tenemos una aplicación cliente-servidor, donde el cliente no tiene absolutamente ningún conocimiento de la DAL real en el lado del servidor, que se implementa dicho sea de paso utilizando NHibernate. Es decir, no hay ninguna referencia a NHibernate de los montajes del lado del cliente, así como no es una abstracción de base de datos. Del lado del cliente habla estrictamente en los términos de entidades, que se basan en objetos de negocio CSLA.

Me gustaría dejar que el lado del cliente filtrar las entidades mostradas. Mi idea es dejar que el lado del cliente construir una expresión LINQ, transmitirlo al lado del servidor, recuperar los datos que coincidan con la expresión utilizando LINQ to NHibernate y devolverlo de nuevo al cliente.

He descargado y compilado LINQ to NHibernate, pero por desgracia no puedo encontrar un ejemplo que desacopla expresiones LINQ (también conocido como el lado del cliente) de la instancia respectiva NHibernateContext (también conocido como del lado del servidor). Todos los ejemplos parecen ser como

from c in db.Customers where ...

es decir. tanto el contexto (db.Customers) y la expresión (donde ...) en un comunicado.

¿Es posible desacoplar ellos? Gracias.

¿Fue útil?

Solución 2

Esto resulta ser bastante fácil - from c in db.Customers where linq-exp select c es equivalente a db.Customers.Where(linq-exp)

.

De hecho, me he necesitado esto como parte de un tema más amplio - especificar una expresión LINQ en el lado del cliente y utilizarlo para obtener los datos en el lado del servidor. Mi puesto aquí lo describe en más detalles.

Otros consejos

Tome un vistazo a este post. Se podía utilizar este concepto para pasar parámetros de consulta y luego dinámicamente construir su consulta.

consulta LINQ construido en bucle foreach siempre toma el valor del parámetro de última iteración

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top