I가 내가 엔티티 모델을 생성 할 때 그들이 어떤 이유로, 링크 테이블 UserInRole
엔티티 프레임 워크 : 생성되지 탐색 속성
를 사용하여 연결되어있는 두 개의 테이블 User
및 UserRole
, 엔티티 UserInRole
생성되지 않습니다.
나는이
select ur.Name from [User] as u
inner join UserInRole uir on uir.UserId = u.Id
inner join UserRole ur on ur.Id = uir.UserRoleId
where u.Username = 'magename'
같은 쿼리를 구현해야합니다 : 당신이 그림에서 볼 수 있듯이, 엔티티 프레임 워크는 User
와 UserRole
사이의 다 대다 관계가 있음을 이해 내비게이션 속성이 존재한다면 일반적인 저장소를 사용하고 있습니다.
from u in repository.AsQueryable<User>()
join uir in repository.AsQueryable<UserInRole>() on u.Id equals uir.UserId
join ur in repository.AsQueryable<UserRole>() on uir.UserId equals ur.Id
where u.Username == userName
select ur.Name
그러나 Entity Framework는 UserInRoles
탐색 속성과 관련된 UserInRole
엔터티를 생성하지 않으므로 해당 상황에서 어떻게해야합니까? 엔티티 UserInRole
과 UserRole
사이의 링크를 제거하여 모델에 생성 된 엔티티 UserInRole
을 얻거나 데이터베이스에서 변경하지 않고 위에서 설명한 쿼리를 수행 할 수있는 방법이 있습니까?
는
그래서 오류 Cannot implicitly convert type 'System.Collections.Generic.List<System.Collections.Generic.IEnumerable<string>>' to 'string[]'
아이디어 점점 그
stirng[] roles = (from u in repository.AsQueryable<User>()
where u.Username == userName
select ur.UserRoles.Select(x => x.Name)).ToArray<string>();
같은 것을 할 필요가 보이는
업데이트?
귀하의 문제를 : 업데이트 된 섹션의 첫 번째 선택 항목은 ** 사용자 목록 **을 선택합니다 - 하나 또는 여러 사용자가 포함되어 있는지 여부는 상관 없지만 ** 사용자 ** 목록이며 사용자를 선택한 사용자의 목록입니다. 역할 '이름 - 그래서 당신은 배열의 목록을 가지고, 기본적으로 - 오류가 무엇을 알려줍니다. –