繁体   English   中英

EF Core - 使用通用方法包含相关实体

[英]EF Core - Include related entities using a generic method

以前,早在 EF Frameowrk 时代,当需要实体的相关实体时,以下方法就足够了。

private IQueryable<T> EntitySet(params Expression<Func<T, object>>[] includes)
    {
        var set = Context.Set<T>().Where(x => !x.IsDeleted);
        if (includes != null)
        {
            foreach (var include in includes)
            {
                set = set.Include(include);
            }                
        }
        return set;
    }

我会用EntitySet(x => x.People, x => x.People.Meetings)类的东西来调用这个方法。 但是,自从迁移到 EF 核心后,我无法再获取相关数据,因为我需要显式使用Include(x.People).ThenInclude(p.Meegings)

我在 EF 核心中尝试做的事情是否可行? 还是在收集相关数据方面发生了太多变化,以至于上述方法不再适用?

您似乎正试图向同一 DbSet 的许多查询添加过滤器。 您之前在 EF Core 中查看过查询过滤器吗? 它似乎与您正在尝试做的事情非常相似。 如果您需要查询应该获取所有记录而不仅仅是活动记录,则可以选择在按查询的基础上忽略查询过滤器。

https://docs.microsoft.com/en-us/ef/core/querying/filters

编辑:如果您希望动态指定您的包含仍然。 您可以在 EF Core 中使用与在 EF 中相同的字符串来执行此操作。 但是,使用 lambda 访问子对象的能力可能会在转换中丢失。 https://entityframeworkcore.com/knowledge-base/38083198/add-include-expressions-dynamically

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM