Лучшие практики для присоединения к сервисам членства / роли / профиля nhibernate и ASP.NET
-
05-07-2019 - |
Вопрос
У меня есть универсальное приложение ASP.NET (MVC), которое использует NHibernate в качестве уровня персистентности модели и службы ASP.NET Membership / role / profile в качестве уровня управления пользователями.
Вопрос в том, что можно считать наилучшей практикой для создания связей между данными домена и пользователями. (Например, я хочу создать систему форума, я хочу связать каждую тему / сообщение с определенным пользователем и отображать пользователя при каждом запросе).
Это те идеи, о которых я думал:
<Ол>Сохраните идентификатор пользователя в NHibernate (например, наличие столбца Guid во всех классах вашего домена (сообщения, темы и т. д.), которые должны ссылаться на пользователя), и используйте GetUser каждый раз, когда вам нужно имя пользователя из guid (что может привести к n + 1 запросам)
Вариант B: можно также сохранить имя пользователя.
Решение
Я бы пошел на шаг 2 (почти, так как он не обязательно должен быть доступен только для чтения) и создал пользовательский поставщик членства для NHibernate.
Чтобы сэкономить время, вы можете использовать существующий, такой как Мануэль Абадия .
При этом вы сохраняете всю мощь NHibernate (ленивая загрузка и т. д.) и наслаждаетесь услугами M / R / P.
Другие советы
Есть также провайдер членства на основе NHibernate на CodePlex
4 парня из rolla имеют отличную публикацию, если вы хотите создать своего собственного провайдера поверх API членства asp.net: http://www.4guysfromrolla.com/articles/110310-1.aspx