2011-02-14 3 views
2

Entity Framework 4.0에서 첫 단계를 수행 중이며 현재 귀찮은 문제에 직면하고 있습니다.자동 생성 엔터티 클래스의 탐색 속성이 누락되었습니다.

내 응용 프로그램의 인증/권한 부여 프로세스는 표준 ASP.NET 멤버 자격 공급자를 기반으로합니다. 즉, 데이터베이스는 잘 알려진 ASPNETDB.MDF입니다. 이 데이터베이스에는 테이블 aspnet_UsersInRoles에 의해 함께 링크 된 테이블 aspnet_Users 및 aspnet_Roles가 있습니다.

새로운 "ADO.NET 엔터티 데이터 모델"을 생성하고 데이터베이스에서 생성을 선택하고 필요한 모든 매개 변수를 제공했으며 마법사에서 관련 .EDMX 파일을 생성했습니다. 나는 이것을 "SecurityModel"이라고 명명했다. aspnet_User 엔티티에는 연결된 모든 역할 및 viceversa를 검색해야하는 탐색 속성이 있음을 알 수 있습니다.

이 시점에서 필자는 SecurityDomainService에 새로운 "도메인 서비스"를 추가했습니다. 질문을 받으면 SecurityModel과 보안 모델을 포함하는 모든 테이블을 선택했습니다. 이 경우에도 마법사가 나를 위해 SecurityDomainService를 생성했습니다.

분명히 전혀 문제가 없습니다. 그러나 엔티티 aspnet_User에서 모든 탐색 속성 (구성원, 프로필, 응용 프로그램 등)이 있지만 역할은 있음을 알게되었습니다.

나는 EntityFramework가 다 대 다 관계를 처리하지 않는다는 것을 읽었습니다. 그러나 엔티티 데이터 모델에서 aspnet_Roles와 aspnet_Users간에 연관이 존재하며 aspnet_UsersInRoles를 기반으로한다는 것을 알 수 있습니다. 또한 데이터 모델 디자이너에서 User 엔터티의 "Roles"탐색 속성을 볼 수 있습니다.

내 질문은 왜이 탐색 속성이 생성되지 않았기 때문입니까?

미리 도움 주셔서 감사합니다. 건배, G.

답변

1

여기서 문제는 aspnet_UsersInRoles 테이블이 다 대다 관계에있는 테이블의 기본 키 필드 만 포함한다는 것입니다. Entity Framework는이 테이블을 '인라인'하고 엔터티로 표시하지 않습니다. Entity Framework는 이러한 유형의 관계를 지원하지 않는 RIA 서비스입니다.

테이블에 추가 필드를 하나만 추가하면 인라인되지 않고 aspnet_UsersInRoles가 생성됩니다. 이는 RIA Services에서 지원됩니다.

스토어드 프로 시저 등을 손상시키지 않도록 aspnet 스키마를주의 깊게 수정해야하지만 null 허용 비트 열을 추가하면 너무 많은 혼란이 발생하지 않아야합니다.