我正在使用使用RIA服務的Silverlight 5業務應用程序從服務端返回POCO類以填充分層菜單。RIA服務返回的Silverlight POCO
我與POCO類的原始問題是SubMenuItems屬性沒有通過RIA服務傳遞,雖然它已在服務端填充。
原始POCO
public class BusinessModelMenuDto
{
[Key]
[Required]
public int ID { get; set; }
public string TextToDisplay { get; set; }
public string ImageSource { get; set; }
public IEnumerable<BusinessModelMenuDto> SubMenuItems { get; set; }
}
服務電話
public IEnumerable<BusinessModelMenuDto> GetCabsHeirarchy()
經過一些進一步的調查我發現,[Include]
和[Association]
屬性都需要在SubMenuItems超過傳遞數據。第一次使用ID => ID關聯時沒有給出期望的結果,因此我添加了ParentID屬性並更改了我的加載代碼,以填充外鍵,如下所示。我還將Associate從ID映射到了家長ID。
更新POCO類
public class BusinessModelMenuDto
{
[Key]
[Required]
public int ID { get; set; }
public int? ParentID { get; set; }
public string TextToDisplay { get; set; }
public string ImageSource { get; set; }
[Include]
[Association("SubItems", "ID", "ParentID")]
public IEnumerable<BusinessModelMenuDto> SubMenuItems { get; set; }
}
在服務器端,我此刻的加載菜單的兩級如此頂級項目包含子項目的集合,但下面還有沒有進一步的子項目。
我遇到的問題是,當RIA服務通過線路發送集合時,層次結構正在混亂。我已確認我返回的內容結構正確,但未正確到達客戶端。頂層是好的,但第二層(SubMenuItems)被混合起來,並出現了兩個更深的SubMenuItems層次。
任何想法我做錯了什麼?我認爲問題出在協會身上或者同一個POCO對象(BusinessModelMenuDto)被用於多個級別。
我不得不通過我們的代碼快速瀏覽一下。我不是專家,但我們有一個類似的結構,我們使用的是List <>而不是IEnumerable <> – GarethOwen
底層對象是List,但我嘗試將屬性更改爲IList ,但它仍然不工作。 –
你可以發佈你的DomainService的查詢方法嗎? – Jehof