2011-08-25 5 views
1

SQL Server에서 뷰를 만들고 페이지의 GridView에서 사용해야합니다. 뷰는 Entity Framework를 통해 내 응용 프로그램에 매핑됩니다.View with Not Entity Framework에서 사용되는 조인

SELECT User.UserName, User.UserId 
FROM User 
WHERE NOT EXISTS (SELECT UsersInRoles.RoleId FROM UsersInRoles 
WHERE UsersInRoles.UserId = User.UserId AND UsersInRoles.RoleId = 'AdminRole') 

UserUsersInRoles 테이블 사이의 관계는 일대입니다 :

은 여기 내 예입니다.

내 ASP.NET 응용 프로그램에서 AdminRole 값을 전달할 수 있어야합니다.

보기에서 매개 변수를 사용할 수 없습니다 (예 : @Role 사용 불가).

뷰와 테이블 만 GridView에 바인딩 할 수 있으므로 저장 프로 시저 (매개 변수 가 옵션 일 수 있음)가 좋지 않습니다.

NOT EXISTS 대신 LEFT OUTER JOIN을 사용할 수있는 임시 해결책이 있습니까? UsersInRoles 테이블에 JOIN이있는이 방법을 사용하면 UsersInRoles에서 내 응용 프로그램의 Entity Framework를 통해 필드를 매핑 할 수 있으며 거기에 조건을 추가 할 수있었습니다 (EntityDataSource.Where 절 사용).

+0

에 오신 것을 환영합니다. 사용자로 등록하는 것을 고려하십시오. 귀하의 질문을 더 쉽게 읽을 수 있도록 편집했습니다. – Zabba

답변

0

저는 EF에서 상당히 새로워졌습니다. 그러나 저는 그 안에 저장 프로 시저 (또는 함수)를 사용할 수 있다는 것을 알고 있습니다. 존재를 들어

Try read this

1

, LINQ의 모든 확장 방법을 사용합니다. 존재하지 않는다면! Any를 사용하십시오.

var query = from user in User 
      where !user.UsersInRoles.Any(role => role.RoleId == 'AdminRole') 
      select new {user.UserName, user.UserId}; 
관련 문제