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);
}
}
}
채워진 사람의 주소록을 어떻게 가져올 수 있습니까?
그냥 궁금 - 왜, 왜 그냥 쿼리에 의해 반환 된 하나를 다시 Person 객체의 새로운 인스턴스를 생성해야합니까? 또한 위의 코드에서 "person"인스턴스는 LoadProperty가 완료되면 Addresses를 가져 오지만 "newPerson"은 복사본이므로 Addresses를 가져옵니다. –