【问题标题】:Is there a way to Filter records when retrieve from EF Include Table从 EF Include Table 检索时有没有办法过滤记录
【发布时间】:2021-02-18 05:49:09
【问题描述】:

我正在尝试从 TblRequisitionMaster(父表)和 isActive==true 记录从 TblRequestionDetail(子表)中提取记录。 非常感谢您的指导...

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

【问题讨论】:

  • 你的意思是当你想包含它的时候?还是全局过滤器?
  • 重复:EF: Include with where clause。请检查以前是否有人问过问题。这个问题不断出现。
  • @Gert,我已经阅读了这篇文章,但找不到 ef core 的确切解决方案,而不是一个好的建议。如果我知道 IgnoreQueryFilters,我会按照指示进行。

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


【解决方案1】:

仅从 EF Core 5 开始提供包含过滤器

但你可以指定Query Filter,它应该自动开始过滤包含。

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

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

【讨论】:

  • 感谢您的及时回复。但是,如果我按照建议编辑模型构建器,如何检索 active==false 记录。因为有些函数只需要活动记录,但有时我们需要检索所有记录。
  • 我认为 HasQueryFilter 仅适用于 root。它不会影响孩子
  • QueryFilter 影响特定类型的所有实体:根、导航、FromSql - 一切。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
相关资源
最近更新 更多