2011-02-10 6 views
5

저장소에 Entity Framework를 사용하고 CRUD 작업을위한 공용 API를 제공하는 웹 서비스가 있습니다.여러 테이블의 쿼리 인 엔터티를 반환하는 방법

Car 엔터티와 1 : 1의 관계가 많은 사용자가있는 경우 GetUser (int userId)의 웹 서비스 메서드에서 다음과 같은 사용자 인스턴스를 쉽게 반환하는 방법 :

public class User{ 
    string Id; 
    IEnumberable<Car> Cars; 
} 

이 엔티티 프레임 워크 내에서 기본적으로 작동합니까? 왜냐하면 Cars 속성이 서버 측에서 사용할 때 게으른다고 가정하기 때문입니다.

+0

'User' 클래스는 실제'User' 엔티티 유형과 다른 무엇인가 위에 있습니까? –

답변

2

엔티티 객체는 직렬화 가능하며 자동으로 Cars 속성을 가져옵니다.

그러나 LINQ 쿼리에 따라 Cars 속성이로드되었거나로드되지 않았을 수 있습니다. 주어진 웹 메소드 내에서 Cars 속성을 항상로드하려면 속성을 명시 적으로로드해야합니다. 아래는 Cars 속성을로드하는 몇 가지 방법입니다.

1) LINQ 쿼리에 Include ("Cars") 메서드를 사용하십시오.

2) 투영법을 사용하십시오.

3) 명시 적으로 Cars 속성을 User 개체의 인스턴스에로드합니다. 예를 들어, 모든

userA.Cars.Load() 
0

비슷한 결과를 얻으려면 LINQ-To-SQL을 사용하고 나에게는 "그냥 효과가 있습니다." 나는 그것을 밖으로 시도하고 무슨 일이 일어나는 지 봅니다. 항목에 [DataContract]을 명시 적으로 정의해야 할 수 있습니다.

2

먼저 User 개체의 메타 데이터 정의에 [Include] 자동차를해야한다. 또한 자동차를 채우려면 getUsers() 메소드를 다시 작성해야 할 것입니다. 이 같은.

public IQueryable<User> GetUsers() 
{ 
    return this.ObjectContext.User.Include("Cars"); 
} 

그것은 내가 당신을 this를 방문하는 것이 좋습니다, 곧 설명하기 쉽지 않다, 그리고 this 웹 사이트.

호프가 도움이됩니다.

관련 문제