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

时间:2012-05-31 22:42:05

标签: sql sql-server-2008 aspnetdb

我已经使用aspnet_regsql.exe为我现有的SQL数据库添加了一系列用于角色,用户和成员资格管理的ASPNET数据库表。

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

是否有任何选项或推荐选项?感谢

干杯, 亚历

2 个答案:

答案 0 :(得分:1)

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

好处是我们不必改变外部数据库模式的任何内容来创建关系,我们可以使用内置的ASPNET Membership概要文件对象轻松地从Web代码隐藏中获取相关密钥

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

这种方法的缺点是ASPNET成员资格表非常非规范化(或者就此而言真正规范化)。它将配置文件属性存储为xml数据或序列化二进制文件。在旧版本中,它使用存储为名称的属性名称和包含所有值的单个值字符串的字符位置进行序列化。这使得从外部表的方面编写查询,连接等很困难(如果不是不可行的)。

对我们而言,这不是什么大问题,因为我们只是根据网站的具体情况处理外部用户数据。因此,使用构建的对象从ASPNET配置文件中获取密钥,然后在外部数据库中查找它很容易。

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

答案 1 :(得分:1)

ASPnet成员资格表中称为UserId的UserKey是标识用户的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

如果您想直接在他们的表格中进行操作,Microsoft(或我)不提供任何明示或暗示的保证。