扩展ASP.NET成员资格提供程序,PK == FK ==好吗?

时间:2009-07-29 15:22:10

标签: asp.net asp.net-membership padding sqlmembershipprovider

我正在使用SQLMembershipProvider并希望添加有关用户的更多信息。这是创建新数据库并为每个新用户创建一个条目的最佳方法吗?如果是这样,有没有理由不在我的新数据库的users表中使用SQLMembershipProvider UserID值作为PK?

或者,有没有充分的理由在我的新数据库中创建新的UserID并使用SQLMembershipProvider UserID作为FK?

3 个答案:

答案 0 :(得分:2)

我想不出为什么那不起作用或为什么你不应该这样做(userid as PK)的原因

我不确定为什么你会为所有内容使用单独的数据库,我可能只是在当前数据库中创建表并使用userid作为FK到aspnet_users表进行设置。

答案 1 :(得分:1)

如果您要重写成员资格提供程序,我会将所有PK列从GUID切换到BITINT。我会这样做有两个原因;一个序列号更容易使用和理解,其次使用BIGINT而不是GUID ID有性能优势。我也只是使用我自己的id列,可以用来喜欢应用程序中的其他表,并删除sql成员资格提供程序中默认的那个。为此,您需要为提供程序中的每个函数提供代码,这不是一项小任务。

答案 2 :(得分:0)

我已经创建了一个包含现有数据库模式的包装器,其中包含一个包含其他属性的MembershipUser类,以及一个创建派生MembershipProvider实例的MembershipUser衍生物类。

我只使用Membership身份验证和更新方法,因为其他支持API有些限制。我有一个单独的创建/编辑用户API供管理员使用。

此解决方案目前正在多个站点上使用,效果很好。