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

时间:2009-06-16 08:34:29

标签: asp.net nhibernate asp.net-membership persistence

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:6)

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

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

这样你就可以充分利用NHibernate(延迟加载等)并享受M / R / P服务。

答案 1 :(得分:2)

CodePlex

还有一个基于NHibernate的会员提供商

答案 2 :(得分:1)

如果你想在asp.net会员API之上建立自己的提供者,那么来自rolla的4个人有一个很好的帖子:http://www.4guysfromrolla.com/articles/110310-1.aspx