加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 基于特定属性的实体框架急切加载

发布时间:2020-12-15 23:30:54 所属栏目:百科 来源:网络整理
导读:我的应用程序中当前的EF设置是延迟加载,这在很大程度上是很好的.但是,我迷失了如何根据其IsEnabled位属性加载相关实体列表的工作. 在这个例子中,我只是返回一个实体列表. return Context.Entities.ToList() 假设Entities对象包含一个ChildEntities列表,如下
我的应用程序中当前的EF设置是延迟加载,这在很大程度上是很好的.但是,我迷失了如何根据其IsEnabled位属性加载相关实体列表的工作.

在这个例子中,我只是返回一个实体列表.

return Context.Entities.ToList()

假设Entities对象包含一个ChildEntities列表,如下所示:

public class Entities
{        
    private string EntityName;

    private List<ChildEntities> ChildEntities;
}

public class ChildEntites
{        
    private string ChildEntityName;
    private bool IsEnabled;
}

我想只想在加载实体列表时根据其IsEnabled标志取出ChildEntities.

解决方法

使用投影

var entities = context.Entities
                      .Select(x => new {x,x.ChildEntities.Where(y => y.IsEnabled))
                      .ToList() // resolve from database before selecting the main entity
                      .Select(x => x.x);

使用第三方库

EF Query IncludeFilter允许您轻松过滤相关实体

var entities = context.Entities.IncludeFilter(x => x.ChildEntities.Where(y => y.IsEnabled))
                               .ToList();

您可以找到文档here

免责声明:我是EF+项目的所有者.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读