使用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

实体类型MVC5 EF6中的用户

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用EF6和LINQ深度加载数据

来自分类Dev

WebApi的EF6合并实体

来自分类Dev

EF6 DbSet <T>在Moq中返回null

来自分类Dev

EF6 LINQ铸柱

来自分类Dev

如何在EF6中使用临时表

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

EF6实体的通用克隆

来自分类Dev

无法使用EF6和MYSQL生成实体

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

EF6 LINQ铸柱

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

EF6忽略相关数据

来自分类Dev

在 EF6 中加载相关实体

来自分类Dev

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

来自分类Dev

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

来自分类Dev

更新 EF6 中的实体子集合