首页 > 解决方案 > 从 EF Include Table 检索时有没有办法过滤记录

问题描述

我正在尝试从 TblRequisitionMaster(父表)和isActive==trueTblRequestionDetail(子表)中提取记录。您的指导将不胜感激...

我正在使用 .NET Core 3.1 和 EF CORE。我需要实体框架核心解决方法,而不是像 EF+ 这样的第三方工具解决方法。

这是我的存储库功能。

public TblRequisitionMaster GetRequisitionMaster(int reqNo, byte companyId)
        {
            Company_CHLContext context = new Company_CHLContext(companyId);
            return context.TblRequisitionMaster.Include(i => i.TblRequestionDetail).SingleOrDefault(s => s.RequestionNo == reqNo && s.RecordStatus.Equals("AC") );
            
        }

课程详情

public partial class TblRequisitionMaster
    {
        public TblRequisitionMaster()
        {
            TblRequestionDetail = new HashSet<TblRequestionDetail>();
        }

        public int RequestionNo { get; set; }
        public string ReqNo { get; set; }
        

        public virtual ICollection<TblRequestionDetail> TblRequestionDetail { get; set; }
    }

public partial class TblRequestionDetail
    {
        public int RequestionNo { get; set; }
        public byte SequenceNo { get; set; }
        public int ItemId { get; set; }
        public bool? IsActive { get; set; }

        public virtual TblRequisitionMaster RequestionNoNavigation { get; set; }
    }

标签: asp.net-mvcasp.net-coreentity-framework-core

解决方案


包含过滤器仅从 EF Core 5 开始可用

但是您可以指定应该自动开始过滤包含的查询过滤器。

modelBuilder.Entity<TblRequestionDetail>().HasQueryFilter(d => d.Active == true);

如果您需要检索未过滤的实体:应用IgnoreQueryFilters运算符。


推荐阅读