2010-11-12 41 views
0

I ont le code suivant ...demande Silverlight RIA retourne seulement 1

internal sealed class Menu_Metadata 
{ 
    private Menu_Metadata() { } 

    [Key] 
    public int MenuHeaderID { get; set; } 
    public string MenuHeaderName { get; set; } 
    [Include] 
    [Association("MenuHeader_MenuItem", "MenuHeaderID", "MenuHeaderID")] 
    public IEnumerable<MenuItem> MenuItems { get; set; } 
} 

public class EmployeeMenuItem 
{ 
    [Key] 
    public int MenuItemID { get; set; } 
    public int MenuHeaderID { get; set; } 
    public string MenuItemName { get; set; } 
} 

[MetadataType(typeof(Menu_Metadata))] 
public class EmployeeMenu 
{ 
    public int MenuHeaderID { get; set; } 
    public string MenuHeaderName { get; set; } 
    public IEnumerable<EmployeeMenuItem> MenuItems { get; set; } 
} 

[EnableClientAccess()] 
public class EmployeeMenuService : DomainService 
{ 
    public IQueryable<EmployeeMenu> GetEmployeeMenu() 
    { 
     BusinessLogic.Employee blEmployee = new BusinessLogic.Employee(); 

     int employeeId = blEmployee.GetEmployeeIdFromUserName(HttpContext.Current.User.Identity.Name); 
     var menuHeaders = blEmployee.GetEmployeeMenuHeaders(employeeId); 
     // This works here! 

     IQueryable<EmployeeMenu> retValue = from mh in menuHeaders 
              select new EmployeeMenu 
              { 
               MenuHeaderID = mh.ID, 
               MenuHeaderName = mh.HeaderName, 
               MenuItems = from mhi in mh.MenuHeaderItems 
                  select new EmployeeMenuItem 
                  { 
                   MenuItemID = mhi.MenuItemID, 
                   MenuHeaderID = mhi.MenuHeaderID, 
                   MenuItemName = mhi.MenuItem.MenuItemName 
                  } 
              }; 
     return retValue; 
    } 
} 

qui est consommé par un contrôle accordéon Silverlight

EmployeeMenuContext employeeMenuContext = new EmployeeMenuContext(); 
accordion2.ItemsSource = employeeMenuContext.EmployeeMenus; 
employeeMenuContext.Load(employeeMenuContext.GetEmployeeMenuQuery()); 

Les années MenuHeaderName viennent par très bien, et les MenuItems est peuplé pour le 1er MenuHeader, mais les 3 autres MenuItems sont vides.

Des idées pourquoi?

À quel point est-il plus facile d'utiliser EF4 et RIA ??? Cela semble si incroyablement et inutilement complexe d'obtenir une entité simple avec une sous-classe dedans!

Répondre

0

Je ne suis pas entièrement sûr, mais il semble que le problème ait pu être que j'essayais de créer des données dans le constructeur xaml. J'ai créé un événement Loaded et déplacé le code là-bas et il semble fonctionner maintenant.