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)

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top