1

我有一个查询方法,有时我会根据情况包括附加表“类别”和“制造商”。但是,每当我运行查询时,类别和制造商导航属性始终为空白。我究竟做错了什么?

private IQueryable<Item> GetQuery(ItemFilter filter, ItemCacheContainer context)
    {
        //Perform optional Joins
        ObjectQuery<Item> query = context.Items;

        if (filter.JoinCategory)
            query.Include("Category");

        if (filter.JoinManufacturer)
            query.Include("Manufacturer");

        return query.Where(i =>
              (!filter.ItemId.HasValue
              || i.ItemId == filter.ItemId.Value));
    }

此外,这是我使用该GetQuery方法的方式,但是当我在其中放置断点时,ConvertItemFromCache我看到了那些空导航属性。

GetQuery(filter, context)
    .ToList()
    .ConvertAll(ConvertItemFromCache)
    .SingleOrDefault();

谢谢!

4

1 回答 1

3

您需要设置queryquery.Include("...")

query = query.Include("Category");

所以在你的例子中:

if (filter.JoinCategory)
 query = query.Include("Category");

if (filter.JoinManufacturer)
 query = query.Include("Manufacturer");
于 2012-04-20T15:08:19.787 回答