MVC4 ユーザプロファイルに独自項目を追加する方法
vs2012のASP.NET MVC 4 アプリケーションのプロジェクトでは,ユーザ管理機能までテンプレートが作成してくれます。このUserProfileに独自の項目を追加するいい方法がわかったので報告します。
この方法で行うと、後でUserProfileクラスに追加する項目が増えても自動的にDBを修正してくれるので大変うれしいです。
参照元: How to create custom additional fields in UserProfile in MVC4
【開発環境】
- Windows7
- Visual Studio 2012 Upsate3
- ASP.NET MVC 4 アプリケーション プロジェクト c#
【修正方法】
①[InitializeSimpleMembership]をコメントアウトする
[Authorize]
//[InitializeSimpleMembership]
public class AccountController : Controller
{
}
②データベース初期化クラスを新規作成する。 (App_Startフォルダに作成した)
public class MyDatabaseInit : DropCreateDatabaseAlways<UsersContext>
{
protected override void Seed(UsersContext context) {
SeedMembership();
}
private void SeedMembership() {
WebSecurity.InitializeDatabaseConnection("DefaultConnection",
"UserProfile", "UserId", "UserName", autoCreateTables: true);
}
}
③ユーザプロファイルのDbContext継承クラスを修正する。
public class MyDatabaseContext : DbContext
{
public DbSet<UserProfile> UserProfiles { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
④UserProfileクラスに新しいフィールドを追加する。
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string MobilePhone { get; set; }
}
⑤Global.asaxのApplication_Start()を修正
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
Database.SetInitializer<MyDatabaseContext>(new MyDatabaseInit());
new MyDatabaseContext().UserProfile.Find(1); //一度使っているだけ
}

