使用Linq返回EF6中的相关实体

安迪

我在了解Linq和EF如何工作以返回数据时遇到问题。我有三个简单的课程

产品,材料,文件

产品是由材料组成的,并且有文件的材料。加载产品时,我想退回构成该产品的物料的所有文档。

这是我的课程:

    public class Product
    {        
      public int Id { get; set; }
      public string Name { get; set; }
      ...
      public ICollection<ProductMaterials> ProductMaterial { get; set; }
    }
    public class ProductMaterials 
    {           
        public int Id { get; set; }

        public int ProductId { get; set; }
        public Product Product { get; set; }
        public int MaterialId { get; set; }
        public Materials Material { get; set; }
        ...           
    }

public class Document
{
    public int Id { get; set; }
    public string Name { get; set; }
    ...
    public ICollection<MaterialDocument> MaterialDocument { get; set; } 
}

public class MaterialDocument
{
    public int Id { get; set; }
    public int MaterialId { get; set; }
    public Materials Material { get; set; }
    public int DocumentId { get; set; }
    public Document Document { get; set; }
}

加载材料及其相关文档时,我没有任何问题。我使用以下查询:

var materialDocuments = db.MaterialDocuments
                                     .Include("Document")
                                     .Where(i => i.MaterialId == id)
                                     .ToList();

如何向产品中加载相关物料和物料文档?我是否需要在MaterialDocument类上指向ProductMaterials的其他Navigation属性?

科里·阿德勒(Corey Adler)

要返回您正在加载Document的特定商品的所有记录Product(给定ID,我们将其称为myProductID),只需执行以下操作:

var product = db.Products.Find(myProductID); //The product that you're loading
var documents = product.ProductMaterials.SelectMany(pm => 
                         pm.Material.SelectMany(mat => 
                            mat.MaterialDocuments.Select(matdoc => matdoc.Document)));

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 EF6 中加载相关实体

来自分类Dev

在 WPF App 中使用 LINQ 返回基于相关表中 FK 的 EF 实体列表

来自分类Dev

EF6渴望加载相关实体的单个属性

来自分类Dev

如何在EF6异步中启动实体存储过程而不等待返回?

来自分类Dev

如何使用扩展实体在EF6类中通过属性更改通知创建新属性?

来自分类Dev

在EF6中更新实体会产生主键异常

来自分类Dev

阻止在EF6中为特定实体生成表

来自分类Dev

更新 EF6 中的实体子集合

来自分类Dev

无法使用EF6和MYSQL生成实体

来自分类Dev

EF6忽略相关数据

来自分类Dev

使用EF6和LINQ深度加载数据

来自分类Dev

EF6:使用外键关系修改实体属性-我是否需要更改ID或相关对象,或两者都更改?

来自分类Dev

EF6 DbSet <T>在Moq中返回null

来自分类Dev

WebApi的EF6合并实体

来自分类Dev

EF6实体的通用克隆

来自分类Dev

使用 Linq 在实体框架中查询嵌套/相关实体

来自分类Dev

实体框架急于在EF4和EF6中加载差异

来自分类Dev

EF6 LINQ铸柱

来自分类Dev

EF6 LINQ铸柱

来自分类Dev

如何使用get方法基于EF6中数据库中的值返回文本

来自分类Dev

EF 6禁用保存相关实体(虚拟)

来自分类Dev

EF6 + MySQL-在单个SaveChanges中插入2个相关对象时出错

来自分类Dev

重构EF6实体以使用复杂类型而不是使用多个属性

来自分类Dev

如何在EF6中使用临时表

来自分类Dev

如何通过EF6使用group by从表中查询?

来自分类Dev

如何使用EF6的分组依据从表中查询?

来自分类Dev

实体类型MVC5 EF6中的用户

来自分类Dev

EF6忽略实体类中的[表]和[列]

来自分类Dev

EF6子实体未在多对多关系中更新