从ASP.NET MVC中采用“aspnet_ ...”sql表

时间:2010-02-23 00:03:03

标签: asp.net-mvc database-design asp.net-membership membership-provider

我刚刚在ASP.NET MVC上开始一个新项目,这将是第一个实际使用这项技术的项目。当我使用Visual Studio 2010创建我的新项目时,它为我的sql server创建了一堆带有“aspnet_”前缀的表。其中一部分涉及内置用户帐户和权限支持。

现在,我想保留一些有关我用户的具体信息。我的问题是“改变这个aspnet_表的结构,以满足我对用户帐户信息的需求是一种很好的做法吗?”。

而且我认为答案是“不”。 (为什么呢?),我打算创建自己的“用户”表。连接aspnet_Users表和我自己的自定义Users表中的记录的好方法是什么。

我希望关系是1:1,数据库中的设计在我的c#代码中尽可能透明(如果重要的话,我正在使用linq到sql)。另外,我不想将aspnet_表中的用户名和密码复制到我的表中并维护数据。

我正在考虑使用视图加入它们。这是个好主意吗?

提前致谢!

编辑:从答案来看,我看到我可能不够清楚,我想要什么。问题不在于如何使用默认的asp.net提供程序,而是如何采用它,满足我的需求。

3 个答案:

答案 0 :(得分:4)

我会创建custom membership provider并完全省略这些aspnet_x表。我已经看到当一个join这些表和带有nhibernate映射的自定义表时会发生什么 - 纯粹的噩梦。

答案 1 :(得分:1)

如果您选择使用您网站的会员资格API,则此link会提供有关如何向用户添加额外信息的信息。

最近我遇到了同样的情况,最终放弃了会员功能,并与DotNetOpenAuth库一起推出了我自己的数据库解决方案。

答案 2 :(得分:-1)

在asp.net中使用会员系统有其优点和缺点。它很容易启动,因为您不必担心验证,用户注册,重置密码。 (如果您计划修改表结构,请务必小心,您必须在生成的视图/存储过程中更改它们

但使用会员资格存在缺陷 您将必须维护2个独立的系统,因为Membership API具有限制,例如,您无法在具有成员资格api的事务内执行操作。 (除非您使用TransactionScope我认为,但您没有其他选择)。

有效的替代方法是实现您自己的安全验证例程,并使用FormsAuthentication。这样,您就可以完全控制用户表,并删除对成员资格API的依赖性。