我为SL app使用EF + WCF Ria服务。假设我有2个表Person,PersonPhone。 2个实体将由EF创建。
然后将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 app中调用此方法,如:
Context.Load<T>(Context.GetPersonByIDQuery(id), LoadBehavior.RefreshCurrent, r =>
{
//......
}, null);
问题是:第一次打电话,没关系,所有PersonPhone都已加载。
出于测试目的,我从SL app中的PersonPone中删除了一些数据,但没有将其保存回DB,如:
Person.PersonPhone.Remove(personphone);
或者:
Person.PersonPhone.Detach(personphone);
然后调用方法在SL app中再次加载Person,Person.PersonPhone不刷新。
如何解决此问题?