2009-06-16 6 views
12

Ho un'applicazione ASP.NET (MVC) generica, che utilizza NHibernate come livello di persistenza del modello e Membership/ruolo/profilo ASP.NET servizi come livello di gestione degli utenti.Le migliori pratiche per unire i servizi di appartenenza/ruolo/profilo ASP.NET e nibire

La domanda è ciò che può essere considerato come la migliore pratica per creare collegamenti tra i dati del dominio e gli utenti. (Ad esempio, voglio creare un sistema di forum che desideri collegare ciascun argomento/post a un utente specifico e voglio visualizzare l'utente a ogni richiesta).

Questi sono i posiibilites Ho pensato di:

  1. Conservare l'ID utente in NHibernate (come avere una colonna Guid in tutte le classi di dominio (messaggi, Tematiche etc.) che ha bisogno di fare riferimento a un utente) e utilizzare GetUser ogni volta che è necessario il nome dell'utente dal guid (che potrebbe causare n + 1 query)

    variante B: In alternativa, memorizzare anche il nome utente.

  2. Utilizzare lo stesso database e creare un utente con dominio maintaned di sola lettura NHibernate User, che esegue il mapping agli stessi dati dei servizi M/R/P.
  3. Dimentica M/R/P e crea un servizio di gestione utenti separato basato su NHibernate
  4. Dimentica entrambi e usa J2EE/RoR/merb/DJango/ecc. (Si prega di non scegliere questa opzione :))
  5. altro ...
+0

Cosa fare intendi per "memorizzare l'ID utente in NHibernate"? – epitka

+0

Voglio dire che memorizzo il guid dell'utente per esempio nella classe Topic/Post/Comment/etc, e uso GetUserName dal membershipprovider per ottenere il suo vero nome dal guid. – SztupY

risposta

6

vorrei andare per la fase 2 (quasi, in quanto non deve necessariamente essere di sola lettura) e creare un provider di appartenenze personalizzato per NHibernate.

Per risparmiare tempo è possibile utilizzare uno esistente come quello da Manuel Abadia.

Con questo si mantiene la piena potenza di NHibernate (caricamento lazy, ecc.) E si godono anche i servizi M/R/P.

2

C'è anche un provider di appartenenze a base NHibernate a CodePlex

Problemi correlati