LINQ to SQL consulta interceptor
-
22-07-2019 - |
Pergunta
Eu estou olhando para implementar alguns LINQ to SQL, mas estou lutando para ver como nós woudl adicionar em regras de negócio de controle de acesso, tais como cliente uma só pode ver as suas ordens. Em ADO.NET Data Services, intercptors consulta fazer exatamente o que eu sou depois, e pode ver como verificar na atualização / inserção / exclusão, mas existe um equivalente do seguinte:
[QueryInterceptor("Orders")]
public IQueryable<Orders> OnQueryOrders(IQueryable<Orders> orderQuery)
{
return from o in orderQuery
where o.Customers.ContactName == HttpContext.Current.User.Identity.Name
select o;
}
Ou wil eu preciso de controle via acessores ao longo da linha de: GetOrdersByCustomer (string customerId)
Solução
Eu acho que, neste caso, a melhor solução seria a construção de uma verdadeira camada de negócios que fica entre a camada de aplicação e sua LINQ para classes de SQL.
Você, então, consultar a sua camada de negócios, que por sua vez iria implementar toda a sua lógica de negócios e filtragem. Se arquitetado adequadamente, que o Business Camada poderia ser bastante transparente para qualquer codificação da camada de aplicação e, em seguida, todo mundo ficaria feliz.