2013-03-09 1 views
0

목록 주소가있는 사람 목록 (주소는 Person의 속성 임) WCF Dataservices에서 WP7 앱으로 이동하는 데 도움이 필요합니다. WFC Dataservices는 관계를 채 웁니다.

내가
[WebGet] 
public IQueryable<Person> GetPersonAdress(int id) 
{ 
    return from p in CurrentDataSource.Persons.Include("Addresses") 
      from a in c.Addresses 
      where a.Field1 > 1 
      where a.Field2 == id 
      select p; 
} 

내 WP7 응용 프로그램에서 EF

를 사용하여 데이터를 얻을 WCF의 DataServices에이 방법을 가지고, 나는 메소드를 호출 어디 DataServices에 클래스는, 다음과 같이 찾고 있어요. 하지만 작동하지 않습니다. BeginExecute는 BeginLoadProperty가 완료되기 전에 종료됩니다.

public class DataServices : IDataServices 
{ 
    public void LoadPersonAddress(Action<IEnumerable<Person>, Exception> callback, int id) 
    { 
     try 
     { 
      var queryString = string.Format("GetPersonAdress?id={0}", id); 

      _context.BeginExecute<Person>(new Uri(queryString, UriKind.Relative), (ar => 
      { 
       var ctx = ar.AsyncState as DBEntities; 
       var persons = new List<Person>(); 

       var results = ctx.EndExecute<Person>(ar); 

       foreach (var person in results) 
       { 
        var newPerson = new Person 
        { 
         Id = person.Id, 
         FirstName = person.FirstName, 
         LastName = person.LastName, 
        }; 

        ctx.BeginLoadProperty(person, "Adresses", (asb => 
        { 
         ctx.EndLoadProperty(asb); 

        }), person); 

        persons.Add(newPerson); 
       } 
       callback(persons, null); 

      }), _context); 
     } 
     catch (Exception ex) 
     { 
      callback(null, ex); 
     } 
    } 
} 

채워진 사람의 주소록을 어떻게 가져올 수 있습니까?

+0

그냥 궁금 - 왜, 왜 그냥 쿼리에 의해 반환 된 하나를 다시 Person 객체의 새로운 인스턴스를 생성해야합니까? 또한 위의 코드에서 "person"인스턴스는 LoadProperty가 완료되면 Addresses를 가져 오지만 "newPerson"은 복사본이므로 Addresses를 가져옵니다. –

답변

0

시도 :

~/GetPersonAddress?id=12345&$expand=Addresses