简单成员资格提供程序 vs 通用 vs 代码优先

3

我想问一下,从SQL Server Compact的角度来看,这三个会员提供者有什么区别。就我所知,前两个设计上可以使用紧凑型服务器,第三个则是因为实体框架而偶然出现的。那么,事实上有任何区别吗?

3个回答

4
“Difference is Universal”几乎和原版一样,只是增加了对SQL Compact和Azure的支持。而“Simple membership”则简化了一些内容,增加了一些现代实现,比如基于令牌的密码重置,并且与ASP.NET Webpages兼容。这两种方法都使用基本的SQL编写,具有笨拙的表结构。而“Code-first”则是使用EF编写的,因此支持更多的数据库。在我的当前实现中,“Code-first”更加简化,只能用于一个站点,但它的表结构更整洁,易于扩展。相比之下,“Code-first”提供了更好的编程体验。

有趣的是,在MVC4示例项目中,他们还使用SimpleProvider作为后端采用CodeFirst方法创建了模型。 - user1121956
虽然它有一些限制,但在这个讨论中已经很好地描述了。[http://codefirstmembership.codeplex.com/discussions/392496] - user1121956

0

从 SQL Compact 的角度来看,提供程序之间没有区别。它们的功能是相同的。但是,在简单成员资格工作方式与通用提供程序之间存在一些实现差异,因此如果您不关心这个问题,那么应该没问题。


你自己说的话你理解了吗?提问者(以及我)正在尝试选择一个供应商而不是另一个。你说“有一些实现上的差异...所以如果你不在意,你应该没问题。”这怎么帮助呢?这些差异正是原始问题的原因 - 它们需要被解释!只有这样我们才能知道我们是否关心这些差异!! - Astrogator

0

SimpleMembership提供程序的结构设计很糟糕 -

您无法更改内部表名称 - 当您有两个或更多应用程序(后端/前端)使用一个数据库时,有时为每个应用程序拥有单独的表非常重要。

由于表名称已开发为静态变量 - 您无法通过配置文件或自定义覆盖类来更改它们的名称 :)

此外,WebMatrix.WebSecurity包含自定义DataContext,实际上不是“Code First”。在深处,它具有相同的xml文件(带有数据库结构) - 因此实际上是“Database First”,但结构不能更改 - 它已被嵌入为资源。

对我来说,标准成员资格比WebSecurity提供的设计更好。


1
你没有更改内部表名的可能性。除非我搞错了..这篇博客说,您可以使用自己的数据库表名与SimpleMembership一起使用。http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx - JBeckton
@JBeckton:你可以使用自己的表而不是UserProfile,也无需保留“UserName”和“UserId”列的名称 - 只有这个。问题在于您无法覆盖SimpleMembershipProvider创建的其他表(webpages_Membership,webpages_Roles,webpages_OAuthMembership,webpages_UsersInRoles)的名称,因此同一架构中的每个应用程序都将使用这四个表的相同集合。 - mrówa

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