2009-06-16 6 views
12

J'ai une application ASP.NET (MVC) générique qui utilise NHibernate comme couche de persistance de modèle et ASP.NET Membership/role/profile services en tant que couche de gestion des utilisateurs.Meilleure pratique pour rejoindre les services d'adhésion/rôle/profil nhibernate et ASP.NET

La question est ce qui peut être considéré comme la meilleure pratique pour créer des liens entre les données de domaine et les utilisateurs. (Par exemple, si je veux créer un système de forum, je veux lier chaque sujet/article à un utilisateur spécifique, et je veux afficher l'utilisateur à chaque demande).

Ce sont les posiibilites j'ai pensé:

  1. Stocker l'ID utilisateur dans NHibernate (comme ayant une colonne Guid dans toutes vos classes de domaine (messages, sujets, etc.) qui a besoin de faire référence un utilisateur) et utilisez GetUser chaque fois que vous avez besoin du nom de l'utilisateur depuis le guid (ce qui peut entraîner n + 1 requêtes)

    Variante B: Vous pouvez également stocker le nom d'utilisateur.

  2. Utilisez la même base de données et créez un utilisateur de l'objet de domaine maintaned NHibernate en lecture seule, qui correspond aux mêmes données que les services M/R/P. Oubliez M/R/P et créez un service de gestion des utilisateurs distinct basé sur NHibernate
  3. Oubliez les deux et utilisez J2EE/RoR/merb/DJango/etc. (S'il vous plaît ne prenez pas cette option :))
  4. autres ...
+0

Qu'est-ce que vous voulez dire par "ID utilisateur du magasin dans NHibernate"? – epitka

+0

Je veux dire que je stocke le guid de l'utilisateur par exemple dans la classe Topic/Post/Comment/etc, et j'utilise GetUserName du membershipprovider pour obtenir son vrai nom du guid. – SztupY

Répondre

6

Je pencherais pour l'étape 2 (presque, car il ne doit pas nécessairement être en lecture seule) et de créer un fournisseur d'appartenances personnalisé pour NHibernate.

Pour gagner du temps, vous pouvez en utiliser un existant comme celui de Manuel Abadia. Avec cela, vous gardez toute la puissance de NHibernate (chargement paresseux, etc.) et profitez également des services M/R/P.

2

Il y a aussi un fournisseur d'adhésion basé NHibernate à CodePlex

Questions connexes