Silverlight RIA请求仅返回1

时间:2010-11-12 20:45:39

标签: linq entity-framework silverlight-4.0 ria

我有以下代码......

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;
    }
}

由Silverlight手风琴控件使用

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

MenuHeaderName正好通过,MenuItems填充第一个MenuHeader,但其他3个MenuItems为空。

任何想法为什么?

在什么时候使用EF4和RIA更容易?对于一个带有子类的简单实体来说,这似乎是非常难以置信和不必要的复杂!

1 个答案:

答案 0 :(得分:0)

我不完全确定,但似乎问题可能是我试图在xaml构造函数中进行数据绑定。我创建了一个Loaded事件并将代码移到那里,它现在似乎正常工作。