如何在ASP MVC4中为每个注册用户创建一个空白数据库

本文关键字:创建 一个 数据库 空白 用户 注册 MVC4 ASP | 更新日期: 2023-09-27 18:15:14

如何为每个注册用户创建空白数据库,或者它已经在ASP MVC4中实现?他们会有不同的数据库吗?例如,在一个存储联系人的应用程序中,我希望不同的用户可以创建他们自己的联系人列表。

如果我有ContactsController,我只想编辑注册用户,我应该写这样的东西吗?

[Authorize]
public class ContactsController : Controller

编辑谢谢Bhushan,我不知道User ID会存储不同的数据。在Contact表中,我有一个与联系人数据相关联的ContactId,它有一个主键,我是否应该在同一个Contact表中添加例如UserId以将其与注册用户ID相关联?UserId应该有主键吗?

如何在ASP MVC4中为每个注册用户创建一个空白数据库

如果我没理解错你的问题:

不同的用户可以创建自己的联系人列表

上述任务不需要单独的数据库,您可以通过在Contact表中添加ContactOwner或类似名称的字段来关联ContactsUsers,该表将存储User ID

所以你的联系人表可以像下面这样:(table NAME: contacts)

|ContactID       | ContactType | ContactName | ContactOwner |
|0123456789      | MOBILE      | Mr. ABC     | USER1        |
|email@email.com | EMAIL       | Mr. ABC     | USER1        |
|0123456789      | MOBILE      | Mr. PQR     | USER1        |
|0123456789      | MOBILE      | Mr. XYZ     | USER1        |
|0123456789      | MOBILE      | Mr. LMN     | USER2        |
|0123456789      | MOBILE      | Mr. AAA     | USER3        |

因此,正如您可以看到上面的示例表,您可以确定哪个ContactID属于哪个User ?或者哪个User创建了哪些联系人?在这种情况下,您必须使ContactOwner主键(复合键)与其他主键(s),以确保一个联系人可以由多个用户拥有/创建。

更新1

要获取特定用户创建的联系人,您可以编写如下查询:

Select * from CONTACTS where ContactOwner = 'USER1'

上面的查询将显示USER1创建/拥有的联系人,而不是其他用户创建的联系人。因此,使用上述查询,您的结果将包含以下记录:

|ContactID       | ContactType | ContactName | ContactOwner |
|0123456789      | MOBILE      | Mr. ABC     | USER1        |
|email@email.com | EMAIL       | Mr. ABC     | USER1        |
|0123456789      | MOBILE      | Mr. PQR     | USER1        |
|0123456789      | MOBILE      | Mr. XYZ     | USER1        |

更新2

您的查询将是一个动态查询,其中ContactOwner将是登录的USER。这和这可能有助于您编写动态查询(准备好的语句)[注意:因为我是Java开发人员,所以我不知道C#中适合编写动态查询的语法。]

如果您希望每个用户都有一个空的DB,只需在创建新数据库的注册过程中添加即可。您可以使用SQL语句(CRATE DATABASE,然后是CREATE TABLE和其他创建语句来创建您的模式)轻松地做到这一点。您也可以使用SMO来复制现有的模板数据库。您也可以使用实体框架数据库优先创建它(只需稍作调整,例如修改连接字符串)。但是,所有这些选项不建议用于您的场景

如果你想给每个用户他的联系人列表,只需在"联系人"表中添加"OwnerUserID"列,或者类似的东西,这将与你的用户表有FK关系,并且将包括这一行所属的用户。在您的查询中,只需按此过滤并显示每个用户自己的联系人列表。

这样以后管理和添加/修改东西会容易得多。此外,像你在问题中所问的那样处理多个数据库会给你带来很多痛苦,几乎没有任何好处(在大多数情况下)。

祝你好运。

供参考,以SQL Server 2012为例,数据库的最大数量是32,767。

请不要为每个用户创建一个新的数据库,它违背了基本的逻辑和建立关系数据库的初衷。使用表、外键等

相关文章: