1

我将 EF+WCF Ria 服务用于 SL 应用程序。假设我有 2 个表 Person,PersonPhone。EF 将创建 2 个实体。

然后将 PersonPhone 定义为 WCF ria 服务的元数据中的组合,例如:

   [MetadataTypeAttribute(typeof(Person.PersonMetadata))]
    public partial class Person
    {
        internal sealed class PersonMetadata
        {
            private PersonMetadata()
            {
            }

            [Include]
            [Composition]
            public EntityCollection<PersohPhone> PersonPhone { get; set; }

           //......
     }
}

然后将 wcf ria 服务方法定义为:

 public IQueryable<Person> GetPersonByID(int id)
        {
            var result = this.ObjectContext.Persons.Include("PersonPhone")
                .Where(x => x.PersonID == id);               
            return result;
        }

然后在 SL 应用程序中调用此方法,例如:

  Context.Load<T>(Context.GetPersonByIDQuery(id), LoadBehavior.RefreshCurrent, r =>
            {
              //......
            }, null);

问题是:第一次打电话,没事,所有PersonPhone都加载了。

出于测试目的,我从 SL 应用程序中的 PersonPone 中删除了一些数据,但没有将其保存回数据库,例如:

Person.PersonPhone.Remove(personphone);

或者:

   Person.PersonPhone.Detach(personphone);

然后在 SL 应用中再次调用加载 Person 的方法,Person.PersonPhone 没有刷新。

如何解决这个问题?

4

0 回答 0