2014-10-19 2 views
6

전체 ASP.Net Identity 프레임 워크를 이해하는 데 어려움이 있습니다. 처음에는 Identity 1.0을 기존 응용 프로그램에 통합하려고했지만 2 개의 DbContext 클래스로 끝났습니다. 응용 프로그램 데이터가 MyDbContext에 있었고, IdentityDbContext의 Identity 사용자 데이터ASP.NET Identity 2.0 확장

내 응용 프로그램 데이터와 ID 관련 데이터 모두에 대해 단일 DbContext를 사용하려고하는데 DbContext를 사용할 때와 마찬가지로 IdentityDbContext를 사용할 수 있다는 다른 질문을 발견했습니다. 그러나, 나는 뭔가를 놓치고 있다고 생각한다.

I는 Identity 팀

PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre 

에서 샘플 프로젝트를 사용하고 ApplicationDbContext

public class ApplicationDbContext : IdentityDbContext 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection") 
    { 
    } 

    static ApplicationDbContext() 
    { 
     // Set the database intializer which is run once during application start 
     // This seeds the database with admin user credentials and admin role 
     Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer()); 
    } 

    public virtual DbSet<Student> students { get; set; } 
    public virtual DbSet<Teachers> teachers { get; set; } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
} 

내가 그 둘을 채울 ApplicationDbInitializer 종자 방법을 사용하고 있습니다에 DbSet 속성을 삽입하려고 해요 테이블, 이런 식으로 :

Student s = new Student { Name = "John" ... }; 
db.students.Add(s); 
db.SaveChanges(); 

EF가 보이지 않습니다. 이 2 개의 테이블을 생성하기 위해 seed 메소드가 호출되지 않았다면 어떻게 될까요?

편집 :

글쎄, 내가 EF는 삭제하고 데이터베이스를 다시하는 데이터베이스를 사용하는 코드를 실행하는 데 필요한.

모든 응용 프로그램 데이터를 관리하기 위해 IdentityDbContext를 사용할 때 오버 헤드가 있습니까? IdentityDbContext를 사용하고 IdentityDser> IdentityDbContext 제네릭 버전 <을 사용하는 경우의 차이점은 무엇입니까?

답변

4

대부분의 경우 하나의 Entity Framework 컨텍스트를 사용하는 것이 좋습니다. 그 다음에는 하나만 관리하면되므로 오버 헤드가 적습니다.

두 가지의 차이점은 IdentityDbContext은 DbContext에서 파생되는 클래스이며 (사용자가 직접 만들 때와 마찬가지로), 인증을 처리하는 추가 DbSets가 포함되어 있으므로 직접 구현할 필요가 없습니다 . IdentityDbContext에서 파생되는 것이 좋습니다. 자세한 내용은 documentation을 참조하십시오.

관련 문제