私はASP.NETを初めて使用し、ASP.NETMVC3の学習を始めたばかりです。デフォルトのテンプレートを使用して新しいASP.NETMVC3プロジェクトを開始しました。このテンプレートには、ほとんどのメンバーシップが既に構成されています。今、私は舞台裏で実際に何が起こっているのかを理解しようとしています。
デフォルトのテンプレートは、基本的にSystem.Web.Security.MembershipProviderをラップするだけのAccountMembershipServiceクラスによって実装されるIMembershipServiceインターフェイスを定義していることがわかりました。コード内のコメントから、この抽象化は単体テストを容易にするために行われているように聞こえます。
デフォルトのMembershipProviderは、Web.configファイルで設定されます。デフォルトのテンプレートから作成された私のプロジェクトは、SqlMembershipProviderに設定されています。
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
これは、SQLExpressデータベース「aspnetdb.mdf」を参照するWeb.configファイルの接続文字列を参照します。
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
プロジェクトを最初に作成したとき、aspnet.mdfファイルはありませんでした。しかし、私のアプリを実行して新しいユーザーを登録した後、このファイルは自動的に生成されたテーブルとすべてでした。何が起きてる?このファイルを作成し、作成する必要のあるテーブルを指定したのは何ですか?