0

我需要帮助从 WCF Dataservices 到我的 WP7 应用程序获取具有列表地址(地址是 Person 上的属性)的人员列表。

我在 WCF DataServices 中得到了这个方法,它使用 EF 获取数据

[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 应用程序中,我得到了一个看起来像这样的 DataServices 类,我在其中调用该方法。但它不起作用。在 BeginLoadProperty 完成之前 BeginExecute 退出...

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);
        }
    }
}

我如何获得一个人的地址列表?

4

1 回答 1

0

尝试:

~/GetPersonAddress?id=12345&$expand=Addresses
于 2013-03-09T21:38:31.493 回答