从EF包含表检索时是否有一种过滤记录的方法

时间:2020-11-05 13:52:16

标签: asp.net-mvc asp.net-core entity-framework-core

我试图从TblRequisitionMaster(父表)中提取一条记录,并从TblRequestionDetail(子表)中提取isActive==true条记录。 您的指导将不胜感激...

我正在使用.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; }
    }

1 个答案:

答案 0 :(得分:1)

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

但是您可以指定Query Filter,它应该开始自动过滤包含的内容。

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

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