Hiyerarşik bir menü oluşturmak için hizmet tarafından bir POCO sınıfını döndürmek için RIA hizmetlerini kullanarak bir Silverlight 5 Business Uygulaması kullanıyorum.Silverlight POCO, RIA hizmetleri tarafından döndürüldü
POCO sınıfıyla olan asıl sorun, hizmet tarafında doldurulmuş olmasına rağmen, SubMenuItems özelliğinin DEA hizmetlerinden geçmemesiydi.
Orijinal 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; }
}
Ben [Include]
ve [Association]
nitelikleri üzerinden veri geçmesine SubMenuItems gerekli olduğunu bulduğumuz bazı daha fazla araştırma sonrasında Servis çağrı
public IEnumerable<BusinessModelMenuDto> GetCabsHeirarchy()
. ID => ID ile ilk kez bunu yapmak istenen sonuçları vermedi, bu yüzden ParentID özelliğini ekledim ve aşağıdaki gibi Yabancı Anahtarı doldurmak için yükleme kodumu değiştirdim. Ayrıca ID'yi Ana Kimlik Kimliğine eşlemek için Ortak'ı da değiştirdim.
üst düzey öğesi subitems bir koleksiyonu içerir ama bunun altında başka subitems vardır bu yüzden şu anda menüsünün iki seviye yükleme am Sunucu tarafında POCO sınıf
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; }
}
güncellendi.
Sahip olduğum sorun, RIA hizmetleri toplama işlemini kablo üzerinden gönderdiğinde, hiyerarşinin iç içe geçmesidir. Döndüğüm şeyin doğru yapılandırıldığını doğruladım, ancak istemci tarafına doğru bir şekilde ulaşmıyor. Üst seviye tamam ama ikinci seviye (SubMenuItems) karıştırılır ve iki furter SubMenuItems düzeyi ortaya çıktı.
Neyi yanlış yaptığım hakkında bir fikriniz var mı? Sorunun Dernek ile mi yoksa aynı POCO nesnesinin (BusinessModelMenuDto) çoklu düzeylerde kullanılmakta olduğu varsayılıyor.
Bizim kodu ile hızlı bir bakış vardı. Ben bir uzman değilim, ama benzer bir yapıya sahip olduğumuz her yerde bir Liste <> değil ve bir IEnumerable <> – GarethOwen
kullanıyoruz. Altta yatan nesne bir Liste'du ancak Mülk'ü bir IList olarak değiştirmeyi denedim ama hala çalışmıyor . –
DomainService sorgu yönteminizi gönderebilir misiniz? – Jehof