interceptor de consulta de linq a sql
-
22-07-2019 - |
Pregunta
Estoy buscando implementar LINQ to SQL, pero me cuesta ver cómo podemos agregar reglas de control de acceso a las empresas, como el cliente a, solo puede ver sus pedidos. En los servicios de datos de ado.net, los interceptores de consultas hacen exactamente lo que busco y pueden ver cómo verificar la actualización / inserción / eliminación, pero ¿hay un equivalente de esto?
[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;
}
O necesito controlar a través de accesores a lo largo de la línea de: GetOrdersByCustomer (string customerId)
Solución
Creo que, en este caso, la mejor solución sería construir una verdadera capa empresarial que se encuentre entre la capa de aplicación y las clases de LINQ to SQL.
Luego consultaría su Business Layer, que a su vez implementaría toda su lógica de negocios y filtrado. Si se diseñó correctamente, esa capa empresarial podría ser bastante transparente para cualquiera que codifique la capa de aplicación y entonces todos estarían contentos.