我在查询结果中缺少第三级导航属性 - 我怎么能得到它?

时间:2018-02-18 20:51:32

标签: linq entity-framework-core

我设置的产品具有名为Identifiers的属性,该属性是List<>标签和值,例如Label =“EAN”和Value =“8001585008186”等。标签存储在标识符标签的单独表中,称为ProductIdentifiers,值作为有效负载存储在名为IdentifiersForProducts的链接表中。导航的第一级是根据产品类别查找产品,第二级是查找产品的标识符值,第三级是查找标识符的标签。

目前,我可以检索所有产品信息,包括Identifier的值,但我无法获取标签。

Product也有List<> Properties,其连接方式与Identifiers完全相同。这适用于重量,大小,颜色等等。

这些是涉及的模型:

public class Product
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Info { get; set; }
    public string LongInfo { get; set; }
    public decimal Price { get; set; }

    public List<ProductImage> Images { get; set; }
    public List<PropertyForProduct> Properties { get; set; }
    public List<IdentifierForProduct> Identifiers { get; set; }
    public List<FrontPageProduct> InFrontPages { get; set; }
    public List<ProductInCategory> InCategories { get; set; }
}

public class IdentifierForProduct
{
    public int Id { get; set; }
    public int ProductId { get; set; }
    public int ProductIdentifierId { get; set; }
    public string Value { get; set; }

    public Product Product { get; set; }
    public ProductIdentifier Identifier { get; set; }
}

public class ProductIdentifier
{
    public int Id { get; set; }
    public string Label { get; set; }
    public int SortOrder { get; set; }

    public List<IdentifierForProduct> Identifiers { get; set; }
}

这是我的疑问:

List<Product> products = await (
                _context.ProductsInCategories
                .Include(p => p.Product)
                    .ThenInclude(ids => ids.Identifiers)
                .Include(p => p.Product)
                    .ThenInclude(props => props.Properties)
                .Where(pc => pc.ProductCategory.Id == cat_id)
                .OrderBy(p => p.SortOrder)
                .Select(p => new Product
                {
                    Id = p.Product.Id,
                    Title = p.Product.Title,
                    Info = p.Product.Info,
                    Price = p.Product.Price,
                    Identifiers = p.Product.Identifiers,
                    Properties = p.Product.Properties
                })
                ).ToListAsync();

在视图中,我正在显示它:

foreach (var item in Model.Products)
{
    @Html.DisplayFor(modelItem => item.Title)<br />
    @Html.DisplayFor(modelItem => item.Info)
    <br />
    @{  if (item.Identifiers != null)
        {
            foreach (var ids in item.Identifiers)
            {
                <span>@ids.Label</span> <!-- Label is blank -->
                <span>:</span>
                <span>@ids.Value</span><br /> <!-- Value is ok! -->
            }
        }
    }
    @Html.DisplayFor(modelItem => item.Price)
}

那么,我该如何检索最后一位数据?

0 个答案:

没有答案