2011-01-19 4 views
0
내가 2 엔티티 (AppRoles 및 AppUsers)에 의해 선택을 수행 할

, Entity Framework 4.0 - EntityDataSource 다 | 대 관계 쿼리?

은 SQL의 경우, 내가 예를 들어,이 작업을 수행 할 것입니다 :

SELECT u.*, r.* FROM AppUsers u ,AppRoles r WHERE u.RoleID = r.RoleID 
또한

이 코드에 LINQ 구문을 사용하여 수행 할 수 있습니다 -뒤에.

그러나, 나는 아래

EntityDataSource

에서 수행하는 방법을 모르는 내 마크 업입니다 :

<asp:EntityDataSource ID="edsUsers" runat="server" 
    ConnectionString="name=ReferralDBEntities" 
    DefaultContainerName="ReferralDBEntities" EnableFlattening="True" 
    EntitySetName="AppUsers" 
    Include="AppRoles" 
    Select="it.AppUsers, it.AppRoles" 
    Where="it.AppUsers.RoleID = it.AppRoles.RoleID" 
    > 
</asp:EntityDataSource> 

그러나 그것은 오류를 보여줍니다.

+1

가정 "그러나 그것은 오류를 보여줍니다." - ** 무슨 오류 ?? ** – RPM1984

+0

뭔가 : System.Data.EntitySqlException : '주소'는 'Transient.collection [CCWinCustomer.CustomerAddress (Nullable = True, DefaultValue =)]'의 구성원이 아닙니다. 컬렉션에서 속성을 추출하려면 하위 쿼리를 사용하여 여러 부분 식별자 인 9 행 26 열 근처의 컬렉션을 반복해야합니다. – Cheung

답변

0

이전 게시물에 응답하지 않았습니다.

선택 = "it.AppUsers, it.AppRoles"

그렇지 않으면 나는 당신의 두 테이블 사이의 관계 설정은 EDMX에 얼마나 잘 모르겠습니다을 제거하십시오. 그것들을 검사하고 싶을 수도 있습니다.

1

, 당신은 당신이 사용자 UserInRoles 즉 3 테이블 구조를 가정하고 각 역할

와 모든 사용자의 목록을 원하는 UserRole

다음

<asp:EntityDataSource ID="edsUsers" runat="server" 
    ConnectionString="name=ReferralDBEntities" 
    DefaultContainerName="ReferralDBEntities" EnableFlattening="True" 
    EntitySetName="UserInRoles" 
    Include="UserRole, User" 
    Select="it.User.FullName, it.UserRole.Name"> 
</asp:EntityDataSource> 

수행 작업

관련 문제