假设我在数据库中有一个Products表,还有一个ProductImages表,其中包含相应的模型:
public class Product {
public int Id {get;set;}
public List<ProductImage> Images {get;set;}
}
public class ProductImage {
public int Id {get; set;}
public int ProductId {get;set;}
public string Url {get;set;}}
}
显然,我可以得到这样的产品清单:
var query = from p in db.Product select p;
我如何获得产品列表,以便每个ProductModel的Images属性都填充了匹配ProductId的图像?
答案 0 :(得分:2)
使用Include,这可确保同时检索相关实体。
var query = from p in db.Product.Include(x => x.Images) select p;
这假设你已经映射了Product
和ProductImage
之间的关系,因为没有提到它没有被映射我相信这个假设是有效的。
答案 1 :(得分:1)
这不仅仅是您的ORM模型,您还需要进行一些配置。在迁移配置文件中,您可以执行此操作
modelBuilder.Entity<Product>()
.HasMany<ProductImage>(pI => pI.Product)
取自Source
您还可以在获取数据的地方写一个.Include(p => p.ProductImages)
。我使用了一个存储库设计模式,所以我把它放在我的存储库中,但是你在哪里打电话来获取数据.Include(p => p.ProductImages)
修改强> 刚注意到你在ProductImages模型中遗漏了一些东西
public virtual Product Product {get; set;}
[ForeignKey("Product")]
public int ProductId {get;set;}
答案 2 :(得分:0)
执行此操作的一种可能方法是使用Entity Framework数据注释,该注释允许您配置两个实体之间的一对多关系并填充导航属性:
public class Product
{
[Key]
public int Id { get; set; }
public List<ProductImage> Images { get; set; }
}
public class ProductImage
{
[Key]
public int Id { get; set; }
[Key, ForeignKey("Product")]
public int ProductId { get; set; }
public string Url { get; set; }
public Product Product { get; set; }
}