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)

¿Fue útil?

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.

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