gpt4 book ai didi

asp.net - 如何将 Membership API 与自己的应用程序相关数据结合使用?

转载 作者:行者123 更新时间:2023-12-04 07:43:45 25 4
gpt4 key购买 nike

在 asp.net 4 中设计新应用程序 我必须决定如何使用 MS SQL Membership API 以及我自己在 MS SQL 数据库中的数据。首先,我需要以更灵活的方式存储和访问用户配置文件数据,然后配置文件提供程序支持。其次,我想链接其他用户相关信息(例如订单)。

无论您将 aspnetdb 表存储在何处(在单独的数据库中或与数据位于同一数据库中),问题仍然是如何保持数据同步。

经过研究,我看到以下相关选项:
1. 来自 asp_Users 的外键 UserId(在 this 教程中建议)。
2. 无外键 - 使用事务(建议 here)。
3. 没有外键 - 使用定制的 AccountController(不管它是什么,建议 here )。
4. 将成员(member)用户 ID (uid) 与自定义用户 ID (int) 联系起来的附加表。
5. ...

一方面,我喜欢第一个解决方案,因为它非常简单,并且在官方的 asp.net 教程中得到了建议。

另一方面,反对者相当合理地指出,使用外键打破了提供者的一般思想,提供者应该帮助分离关注点并可以互换。但不幸的是,它们并没有涉及实现细节,因此从相关性和实现的难易度方面评估这些建议并不容易。

那么解决这个问题的最佳选择是什么?此外,实现会是什么样子?仅使用额外的 ADO.NET 或 LINQ 等代码就足够了,还是值得实现自定义成员资格和/或配置文件提供程序?

先感谢您。

最佳答案

第一种是最简单的方法。在相关表(例如 Ordered_by)中添加用户的 GUID 作为外键。我看不出它在哪里打破了分离的担忧。如果你想在数据库中保留顺序记录,你还必须保留下订单的用户,这是完全有道理的。

我在当前的应用程序中成功使用了选项 4。我创建了一个表 aspnet_UserIDidUser int作为主键和 fiUser(aspnet_Users 的 GUID)作为外键。这是模型:

Data-Model

(注意:User 是通过 aspnet_regsql.exe 创建的标准 aspnet_Users 表,而 aspnet_UserId 是我的自定义表,它用我的 int-ID 映射每个 Guid)

现在我只存储我的 idUser在所有相关表中作为 FK(如在您的订单表中)。这具有更少存储和更易读的用户 ID 的优点(我永远记不起 GUID)。也许它与这个“包装表”更加分离,但这不是我的主要意图。

您可以更改 delete-rule如果您想控制行为,请在您的外键上。将其设置为 Cascade如果你想要删除您要删除的用户订购的所有订单或将其设置为 no Action如果你想保持这个顺序。

我不能为 Profile 问题提出任何替代方案,因为您没有提到“需要以比 Profile provider 支持的更灵活的方式存储和访问用户配置文件数据”的意思。

关于asp.net - 如何将 Membership API 与自己的应用程序相关数据结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6532418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com