2010-05-22 79 views
0

我有一个已经有一个用户表我怎么aspnet_Users表格内(asp.net成员)集成到现有数据库

列的数据库:
用户ID - 诠释
LOGINNAME - 串
第一个字符串
最后 - 字符串

我刚刚安装了asp.net成员资格表。现在我所有的表都加入到我的用户表的外键进入“用户id”字段

我如何asp.net_users表融入我的架构?下面是我想到的思路:

  1. 一个membership_id字段添加到我的用户表,并在新的插入,包括在我的用户表新领域。这似乎是最干净的方式,因为我不需要打破任何现有的关系。

  2. 突破所有现有的关系,并把所有的领域在我的用户表到asp.net_users表。这看起来像一个痛苦,但最终会导致最简单的,规范化的解决方案

任何想法?

回答

2

我经常使用各种方式的提供者堆栈,并取得了巨大的成功。

我会用恭敬的观察,与sqlProvider的堆栈你的经验有限,阻力最小的路径,似乎你是拼接成aspnet_db继续。

抽象商栈提供恭维,相互以直观的方式进行交互......如果你花时间去了解它是如何工作清楚分开的功能集。

推而广之,虽然还不完善,SqlProviders提供该underly的asp.net运行时广泛的个性化和安全设施非常强大的后备存储。

您为理解这些设施的工作做出的更多努力,更少关注如何修改(读取:中断)现有模式,更多关注如何设想现有数据如何适应现有模式,更少的努力您最终将花费最终的资金,以最终获得一个您不必设计,编写,测试和维护的强大,易于理解的安全和个性化系统。

不要误会我的意思,我不是说不能自定义提供商。这是抽象工厂模式的全部要点。但是,在你将自己融入数据库/架构/关键基础架构系统之前,你应该更好地理解它。

一旦你达到那一点,你将开始看到,如果你专注于学习如何使开发时间成千上万个工时的系统以及每天每分钟为你工作的无数用户的生活变得简单您将在真正关心您和您的利益相关者的事情上完成更多的实际工作。

所以 - 建议您将用户导入到aspnet_db/sqlprovider堆栈中,并利用提供的工具。

aspnet_db中的userId是一个GUID,应该保持这种状态的原因有很多。如果您需要保留原始的整体用户标识符 - 将其存储在移动引脚字段中以供参考。

成员资格是您希望放置与安全和标识相关的信息的位置。用户名,密码等

配置文件是您想要放置像名称和站点首选项的元数据。

无论如何 - 我想说的是,在你破解它之前你需要更好地理解数据库和提供者。通过了解如何按照提供的方式使用它并开始您的体验将更加富有成效。

祝你好运。

+0

@代码诗人 - 我感谢你的想法,但你仍然没有处理现实,我有10个表已经加入到我自己的用户表。我需要迁移策略 – leora 2010-05-23 10:06:08

+0

@ooo - 发布您的模式,我会很乐意提供建议。可能有一个甜蜜点,两者可以有机连接。 – 2010-05-23 10:47:05

+0

@code诗人 - 本质上我有上面的users表和其他10个表(我认为这些表的细节与问题无关),其中这些表都有一个user_id列,这个列是我现有用户表中的外键。我不确定是否有任何其他信息与辩论有关 – leora 2010-05-23 10:58:32

1

根据我的经验,“ASP.NET成员资格提供程序”引入了比解决问题更复杂的问题。所以我会选择2:自定义用户表。

P.S.如果有人已经成功使用“ASP.NET会员供应商”,请发表评论!

+0

我已经成功地使用了“ASP.NET成员资格提供程序”,但没有使用内置的SqlMembershipProvider。我创建了自己的自定义成员资格提供程序来处理我的表格模式。我没有为MembershipProvider实现所有的方法,只是我需要的方法。 – 2010-05-22 22:47:40

+0

我几乎总是最终用相关的自定义角色HTTPModule编写自己的成员资格和角色提供程序。提供商的基础设施非常好,但内置的提供商远远不够。这很容易实现,并且不会将我绑定到几乎不符合实际业务需求的数据库结构中。如果你想编写你自己的自定义提供者,那也很容易......(http://www.smelser.net/blog/post/2008/10/29/Ill-be-your-Provider.aspx) – JoeGeeky 2010-05-22 22:49:07

相关问题