2

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

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

[Authorize]
public class ContactsController : Controller

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

4

3 回答 3

4

如果我正确理解您的问题:

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

上述任务不需要单独的数据库,您可以Contacts通过在Users将存储.ContactOwnerContactUser 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与其他主键一起制作主键(复合键),以确保一个联系人可以由多个用户拥有/创建。

更新 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

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

于 2013-05-24T11:14:53.377 回答
4

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

如果您想为每个用户提供他的联系人列表,只需将“OwnerUserID”列或类似的内容添加到“联系人”表中,这将与您的用户表具有 FK 关系,并将包括该行所属的用户。在您的查询中,只需按此过滤并显示每个用户自己的联系人列表。

这样,您将来管理事物和添加/修改事物会容易得多。此外,像您在问题中提出的那样使用多个数据库会给您带来很多痛苦,几乎没有任何好处(在大多数情况下)。

祝你好运。

于 2013-05-24T11:17:28.877 回答
0

仅供参考,例如在 SQL Server 2012 中,数据库的最大数量为 32,767。

请不要为每个用户创建一个新数据库,它违背了基本逻辑和首先拥有关系数据库的意义。使用表和外键等等。

于 2013-05-24T11:23:22.857 回答