2014-11-11 4 views
1

내 자신의 DbContext를 사용하여 응용 프로그램 사용자와 비즈니스 엔터티 간의 관계를 만들려면 도움이 필요합니다. 나는 두 개의 DbContext를 가지고 있는데 하나는 Identity와 Business Entities를위한 것입니다.IdentityDbContext, DbContext 및 관계

public class IdentityDbContext : IdentityDbContext<ApplicationUser> 
{ 
     public DbSet<Singles> Single { get; set; } 
     public DbSet<Country> Country { get; set; } 
     public DbSet<Ethnicity> Ethnicity { get; set; } 
} 

위의 사항이 유용합니다. 위의 DbSet 속성을 내 자신의 DbContext로 이동하면 IdentityUserLogin 테이블 등등과 관련된 일부 외래 키 오류가 발생합니다. 단일 응용 프로그램 사용자와 단일 응용 프로그램 사용자 간의 관계를 만들려고하고 있기 때문에 이것이 가능합니다. 또한 국가와의 관계가 있습니다. 민족성. 위 DbSet 속성을 내 DbContext로 이동하고 IdentityDbContext와 함께 사용하는 것과 같은 관계를 만들 수 있습니까?

답변

0

더 나은 아이디어는 다른 컨텍스트를 사용하는 대신 IdentityDbContext 만 사용하는 것이 좋습니다. 즉, 모든 것을 정체성의 맥락으로 옮기려고합니다. ID 컨텍스트가 정상 컨텍스트를 상속하므로이 작업이 가능합니다.

+1

확인. IdentityDbContext에서 lazyloading을 비활성화 할 수있는 방법을 알려주십시오. 나는 심지어 내 구성에서 Proxycreation 및 Lazyloading을 false로 설정하지 않으면 내 쿼리에 "Include"를 사용할 때만로드 할 것으로 예상되는 탐색 속성을로드합니다. –

+0

일부 코드가 있습니까? 게으른 로딩을 거짓으로 설정하면 여전히 관련 엔터티가로드되는 것이 이상하다는 것을 알게되었습니다. Btw : 탐색 속성 정의에서 가상을 제거하면 지연로드가 가능한 관계가 제거됩니다 (지연로드가 설정된 상태에서도 가능). 또한 ef의 로컬 (메모리 내) 데이터가 비 지연 읽기 효과와 관련되어 있는지 확인하십시오. (http://msdn.microsoft.com/en-us/data/jj592872.aspx) – Indregaard

+0

@Horizon_Net - 호기심에서 벗어난 _strictly_가 필요합니까? 아니면'IdentityDbContext'를 사용하여 엔티티를 참조하는'DbContext' 구현을위한 방법이 있습니까? 나는 모든 엔티티를 새로운 기본 클래스로 이동하는 것을 꺼려한다. 그래서 그들 중 일부는'ApplicationUser' 클래스를 참조 할 수있다. –