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); //一度使っているだけ }