Domanda

Ho un'applicazione ASP.NET (MVC) generica, che utilizza NHibernate come livello di persistenza del modello e servizi di appartenenza / ruolo / profilo ASP.NET come livello di gestione utenti.

La domanda è: quale può essere considerata la migliore pratica per creare collegamenti tra i dati del dominio e gli utenti. (Ad esempio, desidero creare un sistema di forum, voglio collegare ogni argomento / post a un utente specifico e voglio mostrare l'utente ad ogni richiesta).

Queste sono le possibilità a cui ho pensato:

  1. Archivia l'ID utente in NHibernate (come avere una colonna Guid in tutte le classi del tuo dominio (Post, Argomenti ecc.) che deve fare riferimento a un Utente) e usa GetUser ogni volta che hai bisogno del nome dell'utente da il guid (che potrebbe comportare n + 1 query)

    Variante B: in alternativa memorizzare anche il nome utente.

  2. Utilizza lo stesso database e crea un utente di dominio non gestito di sola lettura NHibernate, 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. (per favore non scegliere questa opzione :))
  5. altro ...
È stato utile?

Soluzione

Vorrei andare al passaggio 2 (quasi, poiché non deve necessariamente essere di sola lettura) e creare un provider di appartenenza personalizzato per NHibernate.

Per risparmiare tempo puoi usarne uno esistente come quello da Manuel Abadia .

Con ciò mantieni la piena potenza di NHibernate (caricamento lento, ecc.) e goditi anche i servizi M / R / P.

Altri suggerimenti

Esiste anche un provider di appartenenze basato su NHibernate su CodePlex

4 ragazzi di rolla hanno un post eccellente se vuoi creare il tuo provider in cima all'API di appartenenza asp.net: http://www.4guysfromrolla.com/articles/110310-1.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top