1

내 프로젝트에 두 개의 컨텍스트가 있습니다. 둘 다 독립적으로 작동하므로 ApplicationDbContext를 사용하여 사용자를 등록 할 수 있으며 나머지 데이터는 별도의 컨텍스트를 사용하여 데이터베이스에 유지됩니다. . 나는 이미이 길로 내려 갔다. 나쁜 생각이라면, 나는 이미 여기에있어 해결책을 찾아야한다.ID가 다른 경우 MVC 5 사용자를 역할에 추가

일부 사용자와 역할을 추가하고 싶습니다. 그래서 Deploying to Azure 튜토리얼의 일부 코드를 사용하고 있습니다. AddUserAndRole 메서드에서 구성 및 시드 메서드가 사용하는 것과 다른 컨텍스트를 사용하고 있음을 알 수 있습니다. 이러한 사용자를 각각의 역할에 추가하려면 어떻게해야합니까?

namespace XxxXxx.Migrations 
{ 
    using Microsoft.AspNet.Identity.EntityFramework; 
    using XxxXxx.Models; 
    using System; 
    using System.Data.Entity; 
    using System.Data.Entity.Migrations; 
    using System.Linq; 

    internal sealed class Configuration : 
      DbMigrationsConfiguration<XxxXxx.DataLayer.myOwnContext> 
    { 
     public Configuration() 
     { 
      AutomaticMigrationsEnabled = false; 
     } 

     bool AddUserAndRole(XxxXxx.Models.Account.ApplicationDbContext context) 
     { 
      IdentityResult ir; 
      var rm = new RoleManager<IdentityRole> 
        (new RoleStore<IdentityRole>(context)); 
      ir = rm.Create(new IdentityRole("admin")); 
      var um = new UserManager<ApplicationUser> 
        (new UserStore<ApplicationUser>(context)); 
      var user = new ApplicationUser() 
      { 
       UserName = "[email protected]" 
      }; 
      ir = um.Create(user, "12341234"); 
      if (ir.Succeeded == false) 
       return ir.Succeeded; 
      ir = um.AddToRole(user.Id, "isAdmin"); 
      return ir.Succeeded; 
     } 


     protected override void Seed(XxxXxx.DataLayer.myOwnContext context) 
     { 
      AddUserAndRole(context); 
     } 
    } 
} 

답변

0

마침내 이것을 수행 할 수있었습니다. 빨리 무대를 재설정하겠습니다.

1) Identity를 사용하여 일반적인 MVC 프로젝트를 시작하고 몇 명의 사용자를 즉시 ​​등록했습니다. 2) 그런 다음 데이터베이스에 변경 사항을 유지하기 위해 코드 우선을 사용하기 시작했지만 구성 파일의 컨텍스트 이름을 ApplicationDbContext 이외의 것으로 변경하고 많은 경우 내 사이트 데이터의 코드 우선과 함께 새 컨텍스트를 계속 사용했습니다. 몇 달 전에 내 사용자 정의로 돌아갑니다.

3) 마침내 사용자와 역할을 변경하고 싶었습니다. 하지만 그 맥락을 어떻게 목표로 할 지 확신 할 수 없었습니다. 나는 그런

Enable-Migrations -ContextTypeName ApplicationDbContext -MigrationsDirectory Migrations\ApplicationDbContext 

: 나는 -ContextTypeName를 사용하고 컨텍스트에 대한 새로운 마이그레이션 디렉토리를 지정하는 새 컨텍스트 내 콘솔 및 활성화 마이그레이션을 열어

:

는 여기에 내가 수행 한 단계 있었다 내 IdentityModel.cs 파일을 변경하고 새로운 변경 사항을 추가했습니다.

모델/IdentityModel.cs (ApplicationUser 클래스)

//Additonal Properties for User 
[Display(Name = "First Name")] 
public string FirstName { get; set; } 
[Display(Name = "Last Name")] 
public string LastName { get; set; } 
[Display(Name = "Local Code")] 
public string LocalCode { get; set; } 

은 그 때 나는 -ConfigurationTypeName와 함께 추가 마이그레이션을 사용하고 내 다른 컨텍스트

Add-Migration -ConfigurationTypeName ProjectNamespace.Migrations.ApplicationDbContext.Configuration "AdditionalUserFields" 

다음으로 우리가해야 할 모든 경로 경로를 지정 다시 Update-Database-ConfigurationTypeName를 사용하여 변경 사항을 유지하고있다 문맥에.

Update-Database -ConfigurationTypeName ProjectNamespace.Migrations.ApplicationDbContext.Configuration 

당신은 이론적으로 MVC에서 여러 가지 상황이 할 수있는,하지만 난 그것을 조금 혼란해서, 내 프로젝트에 언제든지 두 가지 이상 사용하지 않을 것입니다. 이 일을하는 데있어 단점이 있는지 나는 또한 모른다. 그 이유는 IdentityDbContext<ApplicationUser>에서 상속받은 내 ApplicationDbContext과 함께 코드 우선을 사용하는 아이디어를 좋아하지 않기 때문입니다. 내 사이트 데이터가 내 응용 프로그램 사용자와 아무런 관련이 없기 때문에 별난 이유가 없습니다. 나는 단지 ApplicationDbContext을 모든 것에 사용하는 것에있어 아무런 문제가 없다고 들었다. 사실 이후 ...

누군가에게 이익이되기를 바랍니다. 결국 StackOverflow에 대한 또 다른 대답을 찾았습니다.여기에 있습니다 :

스택 오버플로 질문 : Multiple Db Contexts in the same db/application

관련 문제