如何使用WCF RIA服务加载主-细节数据(超过2个层次结构)



我试图让我的头周围的树视图,我能够做两个关卡,但我难住了添加第三个关卡。我假设你做了一个第三层次模板-但我不确定这是如何加载的。我使用的是AdventureWorks数据库作为样本数据。

我正在使用Product, ProductCategory和ProductSubCategory表。

我的元数据看起来像。(只是有趣的部分)

public partial class Product
{
    public string Name { get; set; }
    public int ProductID { get; set; }
    public string ProductNumber { get;set; }
    public ProductSubcategory ProductSubcategory { get; set; }
    public Nullable<int> ProductSubcategoryID { get; set; }
}
public partial class ProductCategory
{
    public string Name { get; set; }
    public int ProductCategoryID { get; set; }
    [Include]
    [Composition]
    public EntityCollection<ProductSubcategory> ProductSubcategory { get; set; }
}
public partial class ProductSubcategory
{
    public string Name { get; set; }
    [Include]
    [Composition]
    public EntityCollection<Product> Product { get; set; }
    public ProductCategory ProductCategory { get; set; }
    public int ProductCategoryID { get; set; }
    public int ProductSubcategoryID { get; set; }

My Queries look like:

public IQueryable<Product> GetProduct()
{
    return this.ObjectContext.Product;
}
public IQueryable<ProductCategory> GetProductCategory()
{
    return this.ObjectContext.ProductCategory.Include("ProductSubcategory");
}
public IQueryable<ProductSubcategory> GetProductSubcategory()
{
    return this.ObjectContext.ProductSubcategory.Include("Product");
}

我的代码后面(这是我有问题的地方理解如何加载两个查询)。我想在ProductCategory下的ProductSubCategory下返回Products

public partial class Tree : Page
{
    public Tree()
    {
        InitializeComponent();
        AdventureWorksContext ads = new AdventureWorksContext();
        trvTree.ItemsSource = ads.ProductCategories;
        ads.Load(ads.GetProductCategoryQuery());           
    }
}

尝试修改您的GetProductCategory查询:

{
    return this.ObjectContext.ProductCategory.Include("ProductSubcategory").Include("ProductSubcategory.Product");
}

我不知道它是否会在你的情况下工作,你想要建立一个树,但它应该包括所需的数据

最新更新