我将 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 没有刷新。
如何解决这个问题?