2013-10-24 36 views
2

我需要爲我的MVC應用程序創建默認角色(admin和user)和默認用戶(我的管理員)。我正在使用代碼第一種方法。我是MVC的新手,對移植不太瞭解。使用SimpleMembership MVC 4創建默認角色和用戶 - 代碼優先方法

我嘗試下面的代碼,但是我的表(webpages_Roles用戶配置)爲空白:

protected override void Seed(Outliner.Models.OutlinerDbContext context) 
     { 
      // This method will be called after migrating to the latest version. 

      // You can use the DbSet<T>.AddOrUpdate() helper extension method 
      // to avoid creating duplicate seed data. E.g. 
      // 
      // context.People.AddOrUpdate(
      //  p => p.FullName, 
      //  new Person { FullName = "Andrew Peters" }, 
      //  new Person { FullName = "Brice Lambson" }, 
      //  new Person { FullName = "Rowan Miller" } 
      // ); 
      // 

      WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); 

      var roles = (SimpleRoleProvider)System.Web.Security.Roles.Provider; 
      var membership = (SimpleMembershipProvider)System.Web.Security.Membership.Provider; 

      if (!roles.RoleExists("Admin")) 
       roles.CreateRole("Admin"); 

      if (!roles.RoleExists("User")) 
       roles.CreateRole("User"); 

      if (General.IsNull(membership.GetUser("admin", false))) 
      { 
       WebSecurity.CreateAccount("admin", "password"); 
      } 
     } 

什麼是滿足我的要求是正確的做法?

+0

你有沒有從Pacakge管理器控制檯運行「Update-Database」? – WannaCSharp

回答

3

您是否設置了數據庫初始值設定項?

例如,在Global.asax

System.Data.Entity.Database.SetInitializer(new OutlinerDbInitializer()); 

將此代碼添加到您的Application_Start()方法我假定你的初始化類有這樣的簽名:

public class OutlinerDbInitializer: DropCreateDatabaseIfModelChanges<Outliner.Models.OutlinerDbContext context> { 
    ... 
} 

試看看這個例子:

http://www.itorian.com/2012/10/entity-frameworks-database-seed-method.html

+0

謝謝..我有SimpleMembershipInitializer ...我將代碼放在那裏..現在它工作.. :) – NMathur

相關問題