intercettore di query da linq a sql
-
22-07-2019 - |
Domanda
Sto cercando di implementare alcuni LINQ to SQL, ma faccio fatica a vedere come aggiungeremo regole di business per il controllo degli accessi, come i clienti, che possono solo visualizzare i loro ordini. Nei servizi dati ado.net, gli intercettori di query fanno esattamente quello che sto cercando e possono vedere come controllare l'aggiornamento / inserire / eliminare, ma esiste un equivalente di questo:
[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 dovrò controllare tramite gli accessori lungo la linea di: GetOrdersByCustomer (string customerId)
Soluzione
Penso che, in questo caso, la soluzione migliore sarebbe quella di creare un vero livello aziendale compreso tra il livello applicazione e le classi LINQ to SQL.
Dovresti quindi interrogare il tuo livello aziendale, che a sua volta implementerebbe tutta la tua logica aziendale e il filtro. Se progettato correttamente, quel livello aziendale potrebbe essere abbastanza trasparente per chiunque codifichi il livello applicazione e quindi tutti sarebbero felici.