Ich verwende eine Silverlight 5 Business Application, die RIA-Dienste verwendet, um eine POCO-Klasse von der Dienstseite zurückzugeben, um ein hierarchisches Menü zu füllen.Silverlight POCO von RIA-Diensten zurückgegeben
Das ursprüngliche Problem, das ich mit der POCO-Klasse hatte, war, dass die SubMenuItems-Eigenschaft über RIA-Dienste nicht übergeben wurde, obwohl es auf der Dienstseite aufgefüllt wurde.
Original-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; }
}
Serviceruf
public IEnumerable<BusinessModelMenuDto> GetCabsHeirarchy()
Nach einiger weiteren Untersuchung fand ich, dass die [Include]
und [Association]
Attribute auf dem SubMenuItems erforderlich waren, über die Daten zu übergeben. Dies zu tun, das erste Mal mit der Zuordnung von ID => ID gab nicht die gewünschten Ergebnisse, also fügte ich die ParentID-Eigenschaft hinzu und änderte meinen Ladecode, um den Fremdschlüssel wie folgt zu füllen. Ich änderte auch den Associate, um von ID zu übergeordneter ID zuzuordnen.
POCO-Klasse Aktualisiert
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; }
}
Auf der Serverseite ich zur Zeit zwei Ebenen des Menüs am Laden, so dass das Top-Level-Element eine Sammlung von SubItems enthält, aber es gibt keine weiteren SubItems darunter.
Das Problem, das ich habe, ist, dass, wenn RIA-Dienste die Sammlung über die Leitung sendet, die Hierarchie durcheinander gebracht wird. Ich habe bestätigt, dass das, was ich zurückgebe, korrekt strukturiert ist, aber auf der Clientseite nicht korrekt ankommt. Die oberste Ebene ist OK, aber die zweite Ebene (SubMenuItems) ist durcheinander und zwei weitere Ebenen von SubMenuItems sind aufgetaucht.
Irgendeine Idee, was ich falsch mache? Ich nehme an, dass das Problem bei der Assoziation liegt oder dass das gleiche POCO-Objekt (BusinessModelMenuDto) für die verschiedenen Ebenen verwendet wird.
ich einen kurzen Blick durch unseren Code hatte. Ich bin kein Experte, aber wo immer wir eine ähnliche Struktur haben, verwenden wir eine List <> und nicht ein IEnumerable <> – GarethOwen
Das zugrunde liegende Objekt war eine Liste, aber ich versuchte, die Eigenschaft zu einem IList ändern, aber es funktioniert immer noch nicht . –
können Sie Ihre Abfrage-Methode des DomainService? – Jehof