Bewährte Methode zum Beitreten zu nhibernate- und ASP.NET-Diensten für Mitgliedschaft, Rolle und Profil

Ich habe eine generische ASP.NET (MVC) -Anwendung, die NHibernate als Modellpersistenzschicht und ASP.NET-Mitgliedschafts- / Rollen- / Profildienste als Benutzerverwaltungsschicht verwendet.

Die Frage ist, was als die beste Vorgehensweise zum Herstellen von Verknüpfungen zwischen den Domänendaten und den Benutzern angesehen werden kann. (Zum Beispiel möchte ich ein Forensystem erstellen, indem ich jedes Thema / jeden Beitrag mit einem bestimmten Benutzer verknüpfe und den Benutzer bei jeder Anfrage anzeigen möchte.)

Dies sind die Möglichkeiten, über die ich nachgedacht habe:

Speichern Sie die Benutzer-ID in NHibernate (z. B. mit einer Guid-Spalte in allen Domänenklassen (Posts, Topics usw.), die auf einen Benutzer verweisen muss) und verwenden Sie GetUser jedes Mal, wenn Sie den Namen des Benutzers aus der Guid benötigen (was dazu führen kann) in n + 1 Abfragen)

B-Variante: Alternativ auch den Benutzernamen speichern.

Verwenden Sie dieselbe Datenbank, und erstellen Sie ein schreibgeschütztes NHibernate-Domänenobjekt "Benutzer", das denselben Daten wie die M / R / P-Dienste zugeordnet ist.Vergessen Sie M / R / P und erstellen Sie einen separaten Benutzerverwaltungsdienst, der auf NHibernate basiertVergessen Sie beides und verwenden Sie J2EE / RoR / merb / DJango / etc. (Bitte wählen Sie diese Option nicht aus :))andere...
 epitka16. Juni 2009, 15:03
Was ist mit "Benutzer-ID in NHibernate speichern" gemeint?
 SztupY16. Juni 2009, 15:11
Ich meine, ich speichere die Guid des Benutzers zum Beispiel in der Topic / Post / Comment / etc-Klasse und benutze GetUserName vom membershipprovider, um den richtigen Namen aus der Guid zu erhalten.

Antworten auf die Frage(3)

4 Kerle von Rolla haben einen hervorragenden Beitrag, wenn Sie Ihren eigenen Provider auf der asp.http://www.4guysfromrolla.com/articles/110310-1.aspx

Lösung für das Problem

da es nicht unbedingt readonly sein muss) und einen benutzerdefinierten Mitgliedschaftsanbieter für NHibernate erstellen.

Um Zeit zu sparen, können Sie eine vorhandene Version wie die von verwendenManuel Abadia.

Damit behalten Sie die volle Leistung von NHibernate (Lazy Loading usw.) und genießen auch M / R / P-Dienste.

Ihre Antwort auf die Frage