流利的Api包含在哪里

时间:2016-11-16 18:02:31

标签: c# asp.net-mvc entity-framework linq

我需要获得带有封面图片的产品。但是当我添加pic => pic.IsCover时它会抛出异常。否则没有问题。我该如何解决它?

错误:

  

Include路径表达式必须引用在类型上定义的导航属性。使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性。   Parametreadı:path

感谢所有

_db.ProdSmartSorts
    .Where(x => catIds.Contains((int)x.Product.CategoryId))
    .OrderBy(x => x.ProdSmartId)
    .Select(x => x.Product)
    .Include(p => p.Pictures.Where(pic => pic.IsCover))
    .Skip(prodCount * (pageNumber - 1))
    .Take(prodCount)
    .ToList();

2 个答案:

答案 0 :(得分:2)

实体框架不支持使用Include方法进行过滤。不过,您可以在这里投票:https://entityframework.codeplex.com/workitem/47

答案 1 :(得分:0)

在DbSet工作之后直接调用.Include()方法吗?即。

_db.ProdSmartSorts
 .Include(p => p.Pictures)
 .Where(x => catIds.Contains((int)x.Product.CategoryId))
 .OrderBy(x => x.ProdSmartId)
 .Select(x => x.Product)
 .Skip(prodCount * (pageNumber - 1))
 .Take(prodCount)
 .ToList();

我认为Include方法仅适用于dbContext中的DbSet对象。如果你尝试将它放在链的下面,你只能根据具体情况使用IQueryable或IEnumerable对象的方法。

另外,据我所知,您不能像尝试那样使用Include功能进行过滤。因此,您必须加载与图片实体相关的所有图像。

编辑:抱歉 - 刚才意识到这个问题是专门要求对Include()方法进行过滤。请不要理会。