NHibernate和ASP.NET Membership

5

我使用ASP.NET MVC 3来开发一个应用程序,其中用户和角色的使用非常频繁。

为了创建用户并分配角色,我使用标准的ASP.NET Membership流程。

在整个应用程序中,我使用NHibernate作为底层数据访问,除了那些使用默认的MembershipProvider和RoleProvider实现的地方(在AccountController内部调用这些实现)。

我想使用NHibernate来读取/编辑/修改由ASP.NET Membership管理的表中的值。

我找到了两种解决方案:

  1. 编写自定义的NHibernate实现MembershipProvider和RoleProvider(甚至可以使用这个)。这是最困难的路径。

  2. 仅映射表格(如此处所述),然后直接使用NHibernate(尽管AccountController的任何默认操作仍由默认提供程序处理)。

有任何建议/推荐吗?

1个回答

3

我曾经使用过你提供的自定义提供程序并取得了不错的成功。但我对它进行了一些修改,以便在其生命周期内使用单个会话。

如果你想使用ASP.net成员身份验证,我认为这种方法是你最好的选择,主要是为了可移植性(它不依赖于数据库中存在任何存储过程)。我目前正在使用来自该链接的修改后的提供程序,在MSSQL和Postgres上没有问题,并且我也在MySQL上使用过它。


我正在为这个实现编写单元测试,目前为止,它在开箱即用时表现非常出色 :-)。 - Nikos Baxevanis
太棒了,很高兴它能正常工作。我从来没有写过相关的测试,你可以随意发布你的测试:D - AlexCuse
2
我计划尽快在Github上分享这个项目。 :-D - Nikos Baxevanis
感谢您的回复,请在此处发布! - AlexCuse
我决定不这样做。主要是因为这个原因:http://blogs.teamb.com/craigstuntz/2010/03/05/38558/ 然而,我在这里提供了一些流畅的NHibernate配置和映射:http://www.nikosbaxevanis.com/bonus-bits/2011/06/dont-rely-on-sql-membership-provider-database-schema.html - Nikos Baxevanis
可能是个合理的论点,不过如果使用 ORM,更改模式通常不太困难。谢谢您发布代码,我会看一下的。 - AlexCuse

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