Как загрузить основные данные (более 2 иерархий) с помощью WCF RIA Services - PullRequest
0 голосов
/ 29 сентября 2011

Я пытаюсь разобраться в древовидных представлениях и могу пройти два уровня, но я озадачен добавлением третьего уровня. Я предполагаю, что вы делаете 3-й иерархический шаблон - но я не уверен, как это загружается. Я использую базу данных 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; }

Мои запросы выглядят так:

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

Мой код позади (вот где у меня проблемы с пониманием, как загрузить два запроса). Я хочу вернуть товары в ProductSubCategory в ProductCategory.

public partial class Tree : Page
{
    public Tree()
    {
        InitializeComponent();

        AdventureWorksContext ads = new AdventureWorksContext();

        trvTree.ItemsSource = ads.ProductCategories;

        ads.Load(ads.GetProductCategoryQuery());           
    }
}

1 Ответ

0 голосов
/ 30 сентября 2011

Попробуйте изменить запрос GetProductCategory следующим образом:

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

Я не знаю, сработает ли он в вашем случае, где вы хотите построить дерево, но он должен включать данныепо мере необходимости.

...