.NET CORE 2 EF包含

雅罗斯拉夫·兰格

我正在使用新的.net核心和EF。

我需要包含linq命令的帮助。我有一些1:N模型,如果集合包含一些标记为“已删除”的数据,我不想包含它们。

怎么做?

var company = await _context.Company
                .Include(y => y.Administrators)
                .Include(y => y.CompanyPartTimers)
                .Include(z => z.WorkPlaces)
                .Include(z => z.Requirements)
                .FirstAsync(x => x.Id == id);

如果我加上条件

.Include(z => z.WorkPlaces).Where(x=>x.WorkPlaces.Where(x=>!x.IsDeleted))

没用 如何正确写呢?

接下来的事情是我有IDeletable接口,如果我有一些自定义linq表达式并且可以为ex做的更好。

.Include(z => z.WorkPlaces).GetNonDeleted()

有人知道怎么做吗?我尝试过这样的事情

public static class LinqExtension
    {
        public static IEnumerable<T> GetActive<T>(this IEnumerable<T> source) where T : class, IDeletable
        {
            return source.Where(x => x.IsDeleted);
        }
    }

谢谢你们。

查尔斯

您可以在DbContext中配置查询过滤器

modelBuilder.Entity<Administrator>()
            .HasQueryFilter(admin => !EF.Property<boolean>(admin, "IsDeleted"));

应该做到的

参考链接:https : //docs.microsoft.com/zh-cn/ef/core/querying/filters

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章