从实体框架中的集合加载相关实体

Posted

技术标签:

【中文标题】从实体框架中的集合加载相关实体【英文标题】:Load related entities from a Collection in Entity Framework 【发布时间】:2013-07-11 15:22:41 【问题描述】:

如何从已加载的集合中加载相关实体:

收藏:

public class Ad

    // Primary properties
    [Key]
    public int Id  get; set; 
    private ICollection<Feature> _features;
    public virtual ICollection<Feature> Features
    
      get  return _features ?? (_features = new HashSet<Feature>()); 
      set  _features = value; 
    

特点:

public class Feature

    // Primary properties
    public int Id  get; set; 
    public string Name  get; set; 

    // Navigation properties
    public virtual ICollection<Ad> Ads  get; set; 
    public Keyword Keyword  get; set; 

关键字:

public class Keyword

    // Primary properties
    public int Id  get; set; 
    public string Name  get; set; 
    public bool IsActive  get; set; 

我需要为广告中的所有功能加载实体关键字。

谢谢

【问题讨论】:

【参考方案1】:

在您的存储库类中尝试:

public Ad GetAd(int id)

     return _database.Set<Ad>().Include(ad => ad.Features.Select(feature => feature.Keyword)).FirstOrDefault(ad => ad.Id == id);

【讨论】:

您好,谢谢,这里的问题是我使用带有 Get、Ad 等方法的存储库。 @Patrick,主要思想是.Include(ad =&gt; ad.Features.Select(feature =&gt; feature.Keyword))。或者您能举例说明您的存储库是如何实现的吗?

以上是关于从实体框架中的集合加载相关实体的主要内容,如果未能解决你的问题,请参考以下文章

如何使用实体框架代码优先从数据库中删除所有相关实体

带有项目/实体集合的 Spring Cache

实体框架 - 通过集合导航和包含属性

实体框架模型中的集合未更新

实体框架查询——加载数据优化

如何使用 Spring Data 中相关实体的集合?