正确的Linq查询使用代码优先实体框架生成的具有多对多关系的对象

On3al

我有两个对象模型,产品和产品类别

public class Product{
    int Id {get; set;}
    public virtual ICollection<ProductCategory> Categories { get; set; }
}

public class ProductCategory{
    int Id {get; set;}
    public virtual ICollection<Product> Products { get; set; }
}

使用实体框架中的代码优先方法生成的多对多关系。

  modelBuilder.Entity<Product>().
            HasMany(p => p.Categories).
            WithMany(c => c.Products)
            .Map(m =>
            {
                m.MapLeftKey("ProductId");
                m.MapRightKey("CategoryId");
                m.ToTable("ProductJoinProductCategory");
            });

当我查询

var productCategory = await db.ProductCategories.FirstOrDefaultAsync(category => category.Id == Id);

即使我的数据库中用ProductJoinProductCategory表中的几个产品填充了产品,Products集合也将返回空。

目前,我正在执行以下操作以填充产品集合

  var productCategory = await db.ProductCategories.FirstOrDefaultAsync(category => category.Id == Id);
  productCategory.Products = db.Products.Where(x => x.Categories.Any(p => p.Id == Id)).ToList();

有没有办法在单个查询中完成此操作?产品对象最终将与其他对象具有多对多关系,我想找到查询对象并返回其所有填充的许多字段集合的正确方法。

622

我认为以下应该起作用:

var productCategory = await db.ProductCategories.Include(p => p.Categories.Select(c => c.Products)).FirstOrDefaultAsync(category => category.Id == Id);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用LINQ和Entity Framework查询具有“ AND”条件的多对多关系

来自分类Dev

使用LINQ查询并创建具有一对多关系的对象

来自分类Dev

实体框架代码优先:一对多关系(空列表)

来自分类Dev

实体框架与相同实体类型但具有不同关系类型的多对多关系

来自分类Dev

实体框架6代码优先-具有用户UserRole权限的多对多

来自分类Dev

实体框架多对多关系

来自分类Dev

在代码优先现有数据库中的实体框架中以多对多关系更新数据

来自分类Dev

代码优先实体框架具有多对多的多个集合

来自分类Dev

实体框架核心代码优先:在多对多关系上级联删除

来自分类Dev

在实体框架中删除多对多关系对象

来自分类Dev

实体框架代码优先:一对多关系(空列表)

来自分类Dev

实体框架(代码优先)多对多LINQ查询格式

来自分类Dev

从具有多对多关系的实体中删除对象

来自分类Dev

如何使用实体框架代码优先在两个实体之间具有多个一对多关系

来自分类Dev

多对多关系代码优先

来自分类Dev

实体框架-代码优先-关系

来自分类Dev

如何查询与实体框架的多对多关系6

来自分类Dev

实体框架使用代码优先的多对多关系

来自分类Dev

在代码优先现有数据库中的实体框架中以多对多关系更新数据

来自分类Dev

具有多对多关系的Entity Framework代码优先方法为SQL Server播种

来自分类Dev

向多对多关系表代码优先实体框架添加一列

来自分类Dev

具有多对多关系的实体框架Generetad表

来自分类Dev

如何在多对多关系中执行-disconnected- delete(实体框架代码优先)

来自分类Dev

实体框架代码优先-关系

来自分类Dev

如何使用实体框架查询多对多关系

来自分类Dev

使用多对多关系添加对象实体框架

来自分类Dev

查询多对多关系实体框架(做错了??)

来自分类Dev

实体框架多对多关系关联未自动生成

来自分类Dev

如何使用我使用实体框架创建的自动生成的类查询一对多关系?

Related 相关文章

  1. 1

    如何使用LINQ和Entity Framework查询具有“ AND”条件的多对多关系

  2. 2

    使用LINQ查询并创建具有一对多关系的对象

  3. 3

    实体框架代码优先:一对多关系(空列表)

  4. 4

    实体框架与相同实体类型但具有不同关系类型的多对多关系

  5. 5

    实体框架6代码优先-具有用户UserRole权限的多对多

  6. 6

    实体框架多对多关系

  7. 7

    在代码优先现有数据库中的实体框架中以多对多关系更新数据

  8. 8

    代码优先实体框架具有多对多的多个集合

  9. 9

    实体框架核心代码优先:在多对多关系上级联删除

  10. 10

    在实体框架中删除多对多关系对象

  11. 11

    实体框架代码优先:一对多关系(空列表)

  12. 12

    实体框架(代码优先)多对多LINQ查询格式

  13. 13

    从具有多对多关系的实体中删除对象

  14. 14

    如何使用实体框架代码优先在两个实体之间具有多个一对多关系

  15. 15

    多对多关系代码优先

  16. 16

    实体框架-代码优先-关系

  17. 17

    如何查询与实体框架的多对多关系6

  18. 18

    实体框架使用代码优先的多对多关系

  19. 19

    在代码优先现有数据库中的实体框架中以多对多关系更新数据

  20. 20

    具有多对多关系的Entity Framework代码优先方法为SQL Server播种

  21. 21

    向多对多关系表代码优先实体框架添加一列

  22. 22

    具有多对多关系的实体框架Generetad表

  23. 23

    如何在多对多关系中执行-disconnected- delete(实体框架代码优先)

  24. 24

    实体框架代码优先-关系

  25. 25

    如何使用实体框架查询多对多关系

  26. 26

    使用多对多关系添加对象实体框架

  27. 27

    查询多对多关系实体框架(做错了??)

  28. 28

    实体框架多对多关系关联未自动生成

  29. 29

    如何使用我使用实体框架创建的自动生成的类查询一对多关系?

热门标签

归档