2011-06-29 6 views
0
  1. Est-il possible d'implémenter la sécurité de niveau ligne ou la fonctionnalité de filtres globaux dans Entity Framework comme session.filters dans nHibernate ORM? Avons-nous du code source ouvert ou des liens pour le même? Si oui Veuillez partager. En dehors de cela, si nous mettons en œuvre un tel filtre manuellement, comment pouvons-nous changer le filtre dynamiquement pour chaque utilisateur? S'il vous plaît partager du code. Pouvons-nous utiliser des filtres manuellement en utilisant l'approche EntityObjects ou l'approche POCO ou les deux?QuestionRow-niveau de sécurité dans Entity Framework 4.0/4.1

Répondre

0

Non - il n'y a pas de filtres globaux. Si vous le souhaitez, vous devez placer le contexte dans une autre couche et créer votre propre solution pour les filtres globaux. Le problème ici est que même si vous créez "un filtre" (= méthode d'extension personnalisée) vous devez l'appliquer manuellement à la requête et même après il est appliqué uniquement à la requête principale mais il n'est pas appliqué aux relations passionnées .

+0

Merci Ladislav pour votre réponse, je me demande comment puis-je pré-filtrer dynamiquement les objets de contexte pour chaque utilisateur puis-je redéfinir manuellement les filtres pour les propriétés de navigation? – vivek

+0

Vous ne pré-filtrez pas les objets. Vous ajoutez simplement une condition spéciale d'ajusteur à chaque requête ou vous enveloppez le contexte et son ensemble dans un autre calque et il retournera toujours 'IQueryalbe' avec le filtre déjà appliqué. En cas de navigations, il n'y a aucun moyen. Si vous souhaitez filtrer les propriétés de navigation, vous devez le faire complètement manuellement et vous ne pouvez pas utiliser le chargement ou le chargement paresseux - vous devez utiliser la projection dans les classes personnalisées. –

+0

hmm vous avez, mais si le chargement paresseux/impatient ne fonctionne pas, il est inutile de créer wrapper et son trop complexe pour filtrer les propriétés de navigation manuellement, besoin de penser à une autre approche. Merci pour la réponse Ladislav – vivek