Intercepteur de requête linq à sql
-
22-07-2019 - |
Question
Je cherche à implémenter certains LINQ to SQL mais j'ai du mal à comprendre comment nous ajouterions des règles commerciales de contrôle d'accès telles que les clients ne peuvent afficher que leurs commandes. Dans les services de données ado.net, les intercpteurs de requête font exactement ce que je cherche et peuvent voir comment vérifier la mise à jour / l'insertion / la suppression, mais existe-t-il un équivalent de ceci:
[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 je dois contrôler via des accesseurs le long de la ligne suivante: GetOrdersByCustomer (chaîne customerId)
La solution
Je pense que dans ce cas, la meilleure solution serait de créer une véritable couche de gestion située entre la couche d'application et vos classes LINQ to SQL.
Vous interrogerez ensuite votre couche de gestion, qui à son tour implémentera toute votre logique métier et votre filtrage. Si elle est correctement architecturée, cette couche de gestion pourrait être assez transparente pour quiconque codant la couche d’application. Tout le monde serait heureux.