1

ASP.NET MVC 3でWebアプリを作成しています。SQLServerDB(開発中のSQL Server Express)を使用して、メンバーシップ、役割、およびその他の関連情報を格納したいと考えています。これまでのところ、自動生成されたaspnetdb.mdfDBに依存しており、新しいユーザーの作成、ログイン、およびログオフを問題なく行うことができました。ただし、アプリケーションで使用されるクラスを表すテーブルを含む別のDBがあります(Entity Framework 4を使用して、クラスはDBに基づいて自動作成されました)。

つまり、私は2つのDBを持っていますが、自分のサイトに膨大な数のユーザーがいるとは想定しておらず、実際には2つのDBは必要ないと考えているため、1つだけにしたいのです。私の場合、aspnetdb.mdfDBにはまだ実際のデータがないので、そのデータの保存について心配する必要はありません。したがって、解決策は、2つのDBを結合するかaspnetdb.mdf、最初にDBを作成せずに、最初から他のDBを使用してユーザーテーブルやメンバーシップテーブルなどを格納することです。

私の質問はマルチパートです:

1)両方のDBを保持している場合、DB内のaspnet_Usersテーブルをaspnetdb.mdf他のDBから外部キーとして参照する方法はありますか?いくつか検索しましたが、これは不可能か、非常に不便なようです。これが可能だったとしたら、それは悪い考えですか?

2)これらを1つのDBに結合する方法について多読を行い、そこに多くのことが書かれているのを見てきました(ここSOを含む)。これを実現するための最良の(または少なくとも良い)方法は、aspnet_regsql.exeツールを使用して「他のDB」を構成し、aspnetdb.mdfDBを削除して、Web.configファイルの接続文字列を変更することです。私が保持する他のDBを参照します。

この声明に出くわしたとき、私はちょうど変更を加え始めようとしていました:

Aspnet_regsqlツールは、ユーザーインスタンスモードで実行されているSQL Server Expressのローカルインストールでは使用しないでください(つまり、接続文字列にはUser Instance = trueが含まれます)。
ここで見つかりました。私のWeb.configファイルはuser instance=trueいたるところにあります。これは、aspnet_reqsqlツールを実行する必要がないことを意味しますか?Web.config接続文字列を変更してaspnetdb.mdfDBを削除することはできますか?user instance=trueライブに移行するときに、を別のものに変更する必要がありますか?

3)問題の解決策には、aspnet_regsqlツールとWeb.configファイルへのいくつかの変更が含まれていると想定していたところまで来ました。より簡単でより良い解決策があれば、私に知らせてください。

明確にするために、私は現在SQL Express、VS Express 2010、およびASP.NET MVC 3を使用して開発中です。最終的には、サイトをホストされた実稼働環境に移動します。したがって、私が実装するソリューションはすべて、稼働するときに引き継ぐ必要があります。

私が言ったように、私はインターネット全体でかなりの読書をしました。これらすべてがどのように連携するかについていくつかのアイデアを形成し始めましたが、読むほど多くの質問があり、明確な方向性がわからなくなってきています。助けてくれてありがとう。

4

1 に答える 1

0

1 つのデータベースを使用します。Entity Framework db-first を使用している場合は、SSMS で必要なテーブルを作成し、このデータベースに対して aspnet_regsql ツールを実行してから、Visual Studio でこれらのテーブルから .edmx ファイルを生成できます。それが完了したら、AspNetMembershipProvider を API として使用して、コードからユーザーとやり取りしたり、dbcontext クラスからユーザーを直接取得したりできます。ユーザーの作成には AspNetMembership プロバイダーを使用することをお勧めします。(とにかく、新しい MVC 3 プロジェクトには、このための定型コードがたくさんあります)、しかし、特別な場合には、コンテキストから直接 users テーブルとやり取りする必要があるかもしれません。オプションがあるのはいいことですが、一貫性を保つようにしてください。

SSMS では、db スキーマのスクリプトを作成し、稼働する準備が整ったら、それを運用システムに対して実行します。また、データ変更用のスクリプトもあります。これらをソース管理下に置いてください。

Code-First を使用している場合は、メンバーシップ クラス dto のコードが事前定義された便利な nuget パッケージが多数あり、それらの横に独自の dto クラスを追加できます。

お役に立てれば。

于 2012-07-30T18:13:00.647 に答える