加入NHibernate和ASP.NET成员身份/角色/配置文件服务的最佳实践

12

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

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

以下是我一直在考虑的可能性:

  1. 在NHibernate中存储用户ID(例如,在需要引用用户的所有领域类(帖子、主题等)中具有Guid列),并在每次需要从guid获取用户名时使用GetUser(这可能导致n + 1查询)

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

  2. 使用相同的数据库,并创建一个只读的NHibernate维护的领域对象“User”,该对象映射到与M / R / P服务相同的数据。

  3. 忘记M / R / P,并创建基于NHibernate的单独的用户管理服务

  4. 忘记两者都使用J2EE / RoR / merb / DJango等(请不要选择此选项 :))

  5. 其他...


“在 NHibernate 中存储用户 ID” 是什么意思? - epitka
我的意思是,例如在主题/帖子/评论等类中存储用户的GUID,并使用MembershipProvider中的GetUserName从GUID获取其真实姓名。 - SztupY
3个回答

6
我会选择第二步(几乎是这样,因为它不一定需要是只读的),并为NHibernate创建一个自定义成员资格提供程序。
为节省时间,您可以使用现有的成员资格提供程序,例如Manuel Abadia的成员资格提供程序。
这样,您就可以保留NHibernate的全部功能(延迟加载等),同时享受M/R/P服务。

2

还有一个基于NHibernate的会员资格提供程序,在CodePlex上。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接