2016-08-12 1 views
1

Ive는 인증을 위해 "개별 사용자 계정"템플릿을 사용하여 새로운 asp.net 핵심 웹 응용 프로그램을 시작했습니다. EF의 모든 구성이 Startup.csEntityFramework 코어에 역할을 어떻게 추가합니까?

services.AddIdentity<ApplicationUser, IdentityRole>() 
      .AddEntityFrameworkStores<ApplicationDbContext>() 
      .AddDefaultTokenProviders(); 

에서 일어나는 것 같습니다 그러나 나는 하나를 추가하는 방법에 대한 예, 또는 문서를 찾을 수 없습니다.

+1

당신이 찾고있는 것이 명확하지 않습니다. 아마도 [this] (https://github.com/aspnet/Entropy/blob/release/samples/MusicStore.Spa/Models/SampleData.cs)가 도움이 될 수 있습니다. – tmg

+0

@tmg 그것은 내가 필요한 것입니다! –

답변

0

나는이 방법으로 이것을 달성했다. DBContext 클래스의 확장 클래스에 시드 메서드를 만들고 시작 클래스의 configure 메서드에서이 메서드를 호출했습니다.

public static class CrmContextExtension 
{ 
    public static async Task SeedDataForContext(this CrmContext context) 
    { 
     // if there is no role exist then create some default role 'administrator' 
     var logger = LogManager.GetCurrentClassLogger(); 

     if (context.Roles.Count() == 0) 
     { 
      var store = new RoleStore<IdentityRole>(context); 
      var manager = new RoleManager<IdentityRole>(store,null, null, null, null,null); 
      var role = new IdentityRole { Name = "administrator" }; 
      IdentityResult result = await manager.CreateAsync(role); 
      logger.Info(result.Succeeded ? "Role 'administrator' has been successfully created" : 
       "Couldn't create role 'administrator' in the seed."); 
     } 
    } 
} 

public async void Configure(IApplicationBuilder app, IHostingEnvironment env, 
     ILoggerFactory loggerFactory, CrmContext context) 
    { ...... 
     await context.SeedDataForContext(); 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 
    } 

문제가 발생하면 알려주세요.

관련 문제