私のアプリケーションは、EF 5 Code First で作成されたドメイン モデルを持つ MVC4 アプリケーションです。アプリケーションには認証/承認が必要で、既定の ASP.NET メンバーシップ プロバイダーを使用したいと考えています。
これを念頭に置いて、aspnet_reqsql ユーティリティを使用して、ASP.NET の既定のメンバーシップ プロバイダーに必要なすべてのテーブルを追加しました。
ただし、私のアプリケーションは、メンバーシップ プロバイダーによって既定で提供されるものよりも多くのユーザーに関する情報を格納する必要があります。例えば:
- ファーストネーム
- 苗字
- 生年月日
- 住所 (別の列に分割)
これらは、メンバーシップ プロバイダー テーブルには存在しません。そこで、不足しているすべての列を users テーブルに追加し、Addresses テーブルも作成して、User と Address の間の関係を作成しました。
次に、Registration View Model に移動し、欠落しているデータ フィールドを追加しました。次に、AccountController に移動し、ユーザーを登録するために呼び出されるメソッドを確認しました。これです:
//
// Summary:
// Creates a new user profile entry and a new membership account.
//
// Parameters:
// userName:
// The user name.
//
// password:
// The password for the user.
//
// propertyValues:
// (Optional) A dictionary that contains additional user attributes. The default
// is null.
//
// requireConfirmationToken:
// (Optional) true to specify that the user account must be confirmed; otherwise,
// false. The default is false.
//
// Returns:
// A token that can be sent to the user to confirm the user account.
//
// Exceptions:
// System.InvalidOperationException:
// The WebMatrix.WebData.SimpleMembershipProvider.Initialize(System.String,System.Collections.Specialized.NameValueCollection)
// method was not called.-or-The Overload:WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection
// method was not called.-or-The WebMatrix.WebData.SimpleMembershipProvider
// membership provider is not registered in the configuration of your site.
// For more information, contact your site's system administrator.
public static string CreateUserAndAccount(string userName, string password, object propertyValues = null, bool requireConfirmationToken = false);
この方法は私をとても混乱させます!データベースへのデータ挿入のロジックが表示されることを期待していたので、それを編集して追加し、メソッドが新しく追加されたフィールドも処理できるようにしましたが、それがすべて欠落しています!
私は何が欠けていますか?希望するタイプの登録を行うにはどうすればよいですか?