Je viens de terminer la création d'un fournisseur de rôles personnalisé en utilisant LINQ to SQL pour l'accès aux données. L'une des fonctions que vous devez écrire pour le fournisseur consiste à supprimer les utilisateurs des rôles.LINQ to SQL Plusieurs à plusieurs requêtes de comparaison
public void RemoveUsersFromRoles(string[] usernames, string[] rolenames);
Maintenant, une approche serait;
- retour une liste des rôles
- itérer pour chaque rôle et de supprimer ce rôle de tous les utilisateurs qui ont ce rôle
Cette approche est loin d'être efficace, je voudrais savoir s'il y a mieux façons de gérer ce type de problème dans LINQ to SQL.
Existe-t-il un moyen de créer une instruction select dans LINQ to SQL qui prendra un tableau de chaînes pour la comparaison, au lieu de faire une boucle et de faire N nombre de sélections? Toute approche mieux que ce que j'ai décrit ci-dessus serait très appréciée.
Tables: Impliqué
User (RecordID, Username)
Role (RecordID, Rolename)
UsersInRole (RoleID,UserID)
Merci!
Juste pour améliorer votre code: J'écrirais facilement les mots complets dans cette requête pour la rendre plus * lisible *: u => utilisateur, r => rôle, uir => usersInRole. –
Je devrais toujours boucler cette requête pour chaque utilisateur et rôle? – Lukasz
Non .. cette requête renverrait tous les enregistrements UsersInRole qui correspondaient à n'importe quelle combinaison de rôle utilisateur + comme spécifié dans les arguments de votre méthode. Vous exécuterez la requête une seule fois pour obtenir (ou supprimer, comme dans mon exemple) les enregistrements pertinents. –