Лучшие практики для присоединения к сервисам членства / роли / профиля nhibernate и ASP.NET

StackOverflow https://stackoverflow.com/questions/1000204

Вопрос

У меня есть универсальное приложение ASP.NET (MVC), которое использует NHibernate в качестве уровня персистентности модели и службы ASP.NET Membership / role / profile в качестве уровня управления пользователями.

Вопрос в том, что можно считать наилучшей практикой для создания связей между данными домена и пользователями. (Например, я хочу создать систему форума, я хочу связать каждую тему / сообщение с определенным пользователем и отображать пользователя при каждом запросе).

Это те идеи, о которых я думал:

<Ол>
  • Сохраните идентификатор пользователя в NHibernate (например, наличие столбца Guid во всех классах вашего домена (сообщения, темы и т. д.), которые должны ссылаться на пользователя), и используйте GetUser каждый раз, когда вам нужно имя пользователя из guid (что может привести к n + 1 запросам)

    Вариант B: можно также сохранить имя пользователя.

  • Используйте ту же базу данных и создайте доступный только для чтения объект домена NHibernate с привязкой User, который сопоставляется с теми же данными, что и службы M / R / P.
  • Забудьте о M / R / P и создайте отдельную службу управления пользователями на основе NHibernate
  • Забудьте об обоих и используйте J2EE / RoR / merb / DJango / и т. д. (пожалуйста, не выбирайте эту опцию :))
  • другой ...
  • Это было полезно?

    Решение

    Я бы пошел на шаг 2 (почти, так как он не обязательно должен быть доступен только для чтения) и создал пользовательский поставщик членства для NHibernate.

    Чтобы сэкономить время, вы можете использовать существующий, такой как Мануэль Абадия .

    При этом вы сохраняете всю мощь NHibernate (ленивая загрузка и т. д.) и наслаждаетесь услугами M / R / P.

    Другие советы

    Есть также провайдер членства на основе NHibernate на CodePlex

    4 парня из rolla имеют отличную публикацию, если вы хотите создать своего собственного провайдера поверх API членства asp.net: http://www.4guysfromrolla.com/articles/110310-1.aspx

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top