Usando as expressões LINQ para dissociar o lado do cliente do DAL (que é o lado do servidor)

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

Pergunta

Não consegui encontrar a resposta entre as muitas postagens no LINQ, então aqui estou eu. Temos um aplicativo cliente-servidor, onde o lado do cliente não possui absolutamente nenhum conhecimento do DAL real no lado do servidor, que é implementado incidentalmente usando o Nibernate. Ou seja, não há referências ao Nibernate dos conjuntos do lado do cliente, bem como sem abstração do banco de dados. O lado do cliente fala estritamente nos termos de entidades, que são baseados em objetos de negócios da CSLA.

Eu gostaria de deixar o lado do cliente filtrar as entidades exibidas. Minha idéia é deixar o lado do cliente construir uma expressão LINQ, transmiti -la para o lado do servidor, buscar os dados que correspondem à expressão usando o LINQ para Nibernate e devolvê -los ao cliente.

Eu baixei e compilei o LINQ para Nibernate, mas infelizmente não consigo encontrar um exemplo que descomponha as expressões LINQ (também conhecidas como cliente) da respectiva instância NibernateContext (também conhecida como servidor). Todos os exemplos parecem ser como

from c in db.Customers where ...

ou seja, o contexto (db.customers) e a expressão (onde ...) em uma declaração.

É possível dissociá -los? Obrigado.

Foi útil?

Solução 2

Isso acaba sendo muito fácil - from c in db.Customers where linq-exp select c é equivalente a db.Customers.Where(linq-exp).

Na verdade, eu precisei disso como parte de um problema mais amplo - especificando uma expressão LINQ no lado do cliente e usá -lo para buscar dados no lado do servidor. Minha publicação aqui descreve isso em mais detalhes.

Outras dicas

Dê uma olhada neste post. Você pode usar esse conceito para passar nos parâmetros de consulta e, em seguida, criar dinamicamente sua consulta.

A consulta Linq incorporada em forach loop sempre leva o valor do parâmetro da última iteração

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top