将添加到ASPNET SQL数据库表的用户和角色与现有用户信息关联

将添加到ASPNET SQL数据库表的用户和角色与现有用户信息关联,sql,sql-server-2008,aspnetdb,Sql,Sql Server 2008,Aspnetdb,我已使用ASPNET_regsql.exe将一系列用于角色、用户和成员管理的ASPNET数据库表添加到现有的SQL数据库中 现有数据库中已有一个用户表,其中包含许多用户的信息(ID、姓名、地址、邮政编码等)。我想要实现的是将新的aspnet_Users表与现有的user表相关联 请问有什么推荐的选择吗?谢谢 干杯, 亚历克斯我几年前参与的一个项目也遇到了类似的情况。我们最终做的是将外部用户表中相关用户记录的主键存储为 这样做的好处是,我们不必更改任何有关外部数据库模式的内容来创建关系,我们可以使

我已使用ASPNET_regsql.exe将一系列用于角色、用户和成员管理的ASPNET数据库表添加到现有的SQL数据库中

现有数据库中已有一个用户表,其中包含许多用户的信息(ID、姓名、地址、邮政编码等)。我想要实现的是将新的aspnet_Users表与现有的user表相关联

请问有什么推荐的选择吗?谢谢

干杯,
亚历克斯

我几年前参与的一个项目也遇到了类似的情况。我们最终做的是将外部用户表中相关用户记录的主键存储为

这样做的好处是,我们不必更改任何有关外部数据库模式的内容来创建关系,我们可以使用内置的ASPNET成员资格配置文件对象轻松地从后面的web代码中获取相关密钥

此配置文件属性的初始填充是通过我们使用ASPNET成员资格配置文件对象专门为任务编写的实用程序完成的,并且由于我们的成员资格设置和外部表都存储了用户的电子邮件地址,使其成为一次性任务的密钥,因此变得更容易

这种方法的缺点是,ASPNET成员资格概要文件表在很大程度上没有进行非规范化(或真正的规范化)。它将概要文件属性存储为xml数据或序列化二进制文件。在旧版本中,它被序列化,属性名存储为包含所有值的单个值字符串的名称和字符位置。这使得从外部表的角度编写查询、连接等变得很困难(如果不是不正确的话)

对我们来说,这并不是什么大不了的事,因为我们只是根据网站上的具体情况处理外部用户数据。因此,使用内置对象从ASPNET配置文件中获取密钥,然后在外部数据库中查找密钥很容易

如果您的项目将执行大量关系查询或批处理,那么我可能会建议您将ASPNET用户ID GUID作为外键存储在外部用户表中,或者如果电子邮件将使用这些外键是唯一的。

在ASPNET成员资格表中称为UserId的GUID是标识用户的GUID。您可以将
UserKey
列添加到
Users
表中,然后开始执行以下危险操作:

select *
  from Users as U inner join
    aspnet_Users as aU on aU.UserId = U.UserKey inner join
    aspnet_Membership as aM on aM.UserId = aU.UserId
  where U.UserId = @UserId
如果你想直接在他们的桌子上摆弄,微软(或我)不提供任何明示或暗示的担保