2

登録ユーザーごとに空のデータベースを作成する方法、または ASP MVC4 で既に実装されている方法は? それらは異なるデータベースを持っていますか? たとえば、連絡先を保存するアプリケーションでは、さまざまなユーザーが独自の連絡先リストを作成できるようにしたいと考えています。

また、ContactsController登録ユーザーのみを編集したい がある場合、そのようなものを書く必要がありますか?

[Authorize]
public class ContactsController : Controller

編集 O ありがとう Bhushan、ユーザー ID が異なるデータを保存することを知りませんでした。連絡先テーブルには、連絡先データに関連付けられている ContactId があり、主キーがあります。たとえば、同じ連絡先テーブルに UserId を追加する必要があります。登録したユーザーIDに関連付けるには?UserId には主キーが必要ですか?

4

3 に答える 3

4

ユーザーごとに空の DB が必要な場合は、新しいデータベースを作成する登録プロセスの一部として追加するだけです。これは、SQL ステートメント (CRATE DATABASE に続いて CREATE TABLE およびスキーマを作成するその他の create ステートメント) を使用して簡単に行うことができます。SMO を使用して、既存のテンプレート データベースを複製することもできます。エンティティ フレームワークのデータベース ファーストを使用して作成することもできます (接続文字列の変更などの微調整が必​​要です)。ただし、これらのオプションはすべて、シナリオにはお勧めできません

各ユーザーに連絡先リストを提供する場合は、「連絡先」テーブルに「OwnerUserID」列などを追加するだけで、ユーザー テーブルとの FK 関係があり、この行が属するユーザーが含まれます。クエリでは、これでフィルタリングして、各ユーザーに自分の連絡先リストを表示するだけです。

これにより、将来の管理や追加/変更がはるかに簡単になります。また、質問で尋ねたように複数のデータベースを操作すると、多くの苦痛が生じ、メリットはほとんどありません (ほとんどのシナリオで)。

幸運を祈ります。

于 2013-05-24T11:17:28.877 に答える
4

あなたの質問を正しく理解できれば:

さまざまなユーザーが独自の連絡先リストを作成できます

上記のタスクは別のデータベースを必要とContactsUsersませContactOwnerContact。.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、複数のユーザーが 1 つの連絡先を所有/作成できるように、他の主キーを使用して主キー (複合キー) を作成する必要があります。

更新 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なる動的なものになります。これこれは、動的クエリ(準備されたステートメント)を書くのに役立つかもしれません[注:私は開発者なので、 forの適切な構文はわかりません動的クエリを作成します。]USERJavaC#

于 2013-05-24T11:14:53.377 に答える
0

参考までに、たとえば SQL Server 2012 では、データベースの最大数は 32,767 です。

ユーザーごとに新しいデータベースを作成しないでください。基本的なロジックと、そもそもリレーショナル データベースを持つことのポイントに反します。テーブルと外部キーなどを使用します。

于 2013-05-24T11:23:22.857 に答える