【问题标题】:.NET 4.5 Universal Membership Provider table names.NET 4.5 通用成员资格提供程序表名称
【发布时间】:2012-07-12 15:49:43
【问题描述】:

有没有办法在数据库中为新的 .NET 4.5 DefaultMembershipProvider 表名添加前缀?它们曾经被命名为 aspnet_Users、aspnet_Roles 等,现在它们仅命名为 Users、Roles 等,这与我的具有表 User 的应用程序架构冲突。

如果我想使用新的通用提供程序并避免这个命名问题,我唯一的选择是使用单独的数据库作为成员吗?

【问题讨论】:

  • 为什么将它们放入完全相同的数据库中?他们应该是分开的。您应该质疑使用自己的不带前缀的表格是否明智。
  • 这是一个见仁见智的问题,两者都做是很常见的,这就是为什么 .NET 框架包含 aspnet_regsql.exe 工具的原因。不幸的是,在 .NET 4.5 中,此工具假定了旧提供程序。
  • 此外,新的通用提供程序将在运行时(如果它们不存在)使用您的默认连接字符串在您的数据库中创建其表。因此,除非您为成员资格提供程序指定一个新数据库,否则它将进入您的应用程序数据库。我不会认为在我自己的表格前加上前缀是明智的。我的表没有被注入任何人的应用程序,但成员表是设计使然。
  • 使用通用提供程序的部分原因是它们支持 SQL Compact Edition 和 SQL Azure。如果您计划在 SQL Azure 上使用您的应用程序,并且您认为您可能需要您的成员资格表参与事务,那么将它们定位在同一个数据库中是唯一的方法,否则您最终将需要 MS DTC 而不是准备在 Azure 上工作。

标签: .net sql asp.net-mvc universal-provider


【解决方案1】:

很遗憾,目前无法自定义 Universal Providers 的表名,我会确保我们考虑在未来添加对此的支持。

【讨论】:

  • 我们最终为会员表使用了单独的数据库
  • 能够指定“dbo”以外的架构也可以。
【解决方案2】:

可以让 DefaultMembershipProvider 使用不同架构下的表,方法是让 DefaultMembershipProvider 使用映射到目标数据库中的非默认架构(例如“成员资格”)的登录名连接到 SQL。在 SSMS 中,查看登录属性、用户映射、默认架构。这样,应用程序的[dbo].[Users] 就不会与[membership].[Users] 冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    相关资源
    最近更新 更多