我在了解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属性?
要返回您正在加载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] 删除。
我来说两句