加入nhibernate和ASP.NET成员资格/角色/配置文件服务的最佳实践

Szt*_*upY 12 asp.net nhibernate persistence asp.net-membership

我有一个通用的ASP.NET(MVC)应用程序,它使用NHibernate作为模型持久层,并使用ASP.NET Membership/role/profile服务作为用户管理层.

问题是什么可以被认为是在域数据和用户之间建立链接的最佳实践.(例如,我想创建一个论坛系统,我想将每个主题/帖子链接到特定用户,并希望在每个请求时显示用户).

这些是我一直在考虑的正面情结:

  1. 将用户ID存储在NHibernate中(比如在所有需要引用用户的域类(帖子,主题等)中都有一个Guid列)并在每次需要guid中的用户名时使用GetUser(这可能会导致在n + 1个查询中)

    B变体:或者也存储用户名.

  2. 使用相同的数据库,并创建一个只读的NHibernate维护域对象User,它映射到与M/R/P服务相同的数据.
  3. 忘记M/R/P并基于NHibernate创建单独的用户管理服务
  4. 忘记两者并使用J2EE/RoR/merb/DJango/etc.(请不要选择此选项:))
  5. 其他...

Mic*_*hal 6

我会去第2步(几乎,因为它不一定需要只读)并为NHibernate创建一个自定义成员资格提供程序.

为了节省时间,您可以使用现有的Manuel Abadia.

有了它,您可以保持NHibernate(延迟加载等)的全部功能,并享受M/R/P服务.