c# - 基于特定属性的 Entity Framework 预加载

标签 c# entity-framework

我的应用程序中 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;
}

我只想在加载 Entities 列表时根据它们的 IsEnabled 标志取出 ChildEntities

最佳答案

您可以使用 Include() 方法加载所有子实体,然后仅选择那些已启用的子实体,例如

Context.Entities.Include("ChildEntites").Select(c => e.IsEnabled == true)

另一种方法是获取过滤器实体,然后运行查询,如图所示 in this post

var data = from e in Context.Entities
            select new
            {
                Entities = e,
                Childs = e.ChildEntites.Where(c => c.IsEnabled == true) 
            };

var Results = data.ToArray().Select(x => x.Entities);

关于c# - 基于特定属性的 Entity Framework 预加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135938/

相关文章:

c# - 下面的场景是如何分配内存的?我设法把它弄糊涂了

c# - 通用 InBetween 函数

c# - 将联合查询转换为 LINQ 到实体查询

c# - 无法转换形式 'System.Data.Entity.Infrastructure.DbRawSQLQuery<System.Collections.Generic.IEnumerable<long> to ' 长'

c# - Azure的EventData.PartitionKey如何决定写入哪个分区?

c# - .NET Reflector 是否无法正确反射(reflect) null 合并运算符?

c# - 优化C#中的空方法调用

c# - 如何以编程方式关闭与数据库的所有现有连接

entity-framework - 如何在 Entity Framework 核心中重命名迁移

c# - 我可以使用代码启用迁移和更新数据库吗