2012-06-25 22 views
0

假設我有2個表:
人(PERSONID,...)
PersonPhone(PPID,persond,phoneid,...)如何使用wcf ria服務重新加載組合對象數據?

在元數據

限定PersonPhone作爲複合:

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

然後我嘗試重新加載人員數據的刷新功能。我所做的是分離之前調用WCF RIA服務人員在視圖模型再次加載Person數據:

Context.Persons.Detach(this.Person); 

它工作得很好,從表中加載個人的所有數據。然後我測試它的PersonPhone: 假設PERSONID = 1,有3個手機爲此人:PhoneID:1,2,3

然後在代碼,我刪除一行從PersonPhone: this.Person.PersonPhonees。除去(電話(1));

進行測試,我沒有提交更改,然後我重新加載人員數據。個人數據從數據庫重新加載,但PersonPhone仍然只有2行:電話(2),電話(3),但它應該有3行所有電話:1,2和3.

如何解決此問題?

回答

0

你將不得不自己管理刷新。 WCF RIA不會替換(或刪除)您在Silverlight客戶端中緩存的任何數據。你的情況,你叫Remove(...)。 WCF RIA尊重對數據的修改。當您再次加載Person時,WCF RIA不應該添加Phone(1),因爲您已將其刪除。

也許你想打電話RevertChanges()在整個上下文中加載之前:

_domainContext.RejectChanges(); 

或者只是Person實體:

_domainContext.EntityContainer.GetEntitySet<Person>().RejectChanges(); 

這將撤消Remove(Phone(1))變化,並允許查詢重新 - 將手機添加到上下文中。