Skip to content

Add named query filter support for .NET 10+ and verify interface compatibility#305

Merged
marcominerva merged 8 commits intodevelopfrom
copilot/add-named-query-filters
Mar 12, 2026
Merged

Add named query filter support for .NET 10+ and verify interface compatibility#305
marcominerva merged 8 commits intodevelopfrom
copilot/add-named-query-filters

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 11, 2026

EF Core 10 introduced named query filters (HasQueryFilter(string, Expression)), enabling multiple filters per entity with selective disabling. This PR extends ApplyQueryFilter to support named filters and adds test coverage confirming interface-based filtering works correctly.

Changes

  • Named filter overloads in ModelBuilderExtensions (behind #if NET10_0_OR_GREATER):
    • ApplyQueryFilter<TEntity>(ModelBuilder, string filterName, Expression<Func<TEntity, bool>>)
    • ApplyQueryFilter<TType>(ModelBuilder, string filterName, string propertyName, TType value)
  • Test project TinyHelpers.EntityFrameworkCore.Tests — 12 tests covering base class filters, interface filters, named filters, multiple filters per entity, and filter lookup by name
  • README updated with interface usage examples and named query filter documentation

Usage

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // Works with interfaces — applies to all implementing entities
    modelBuilder.ApplyQueryFilter<ISoftDeletable>("SoftDelete", e => !e.IsDeleted);
    modelBuilder.ApplyQueryFilter<ITenantEntity>("TenantFilter", e => e.TenantId == currentTenantId);
}

// Selectively disable at query time
var items = await context.People.IgnoreQueryFilters(["SoftDelete"]).ToListAsync();
Original prompt

This section details on the original issue you should resolve

<issue_title>Add support for named query filters in TinyHelpers.EntityFrameworkCore (available only in .NET 10 and greater)</issue_title>
<issue_description>### Goal

Enhance TinyHelpers.EntityFrameworkCore to support named query filters, leveraging features available starting from .NET 10. This will allow developers to define and apply reusable query filters by name, simplifying scenarios where dynamic or conditional filtering is required.

Requirements

  • Implement named query filter support in TinyHelpers.EntityFrameworkCore.
  • Ensure compatibility checks so this feature is available only when targeting .NET 10 or greater.
  • Provide example usage in the documentation.
  • Add relevant unit tests for this new functionality.

Additional Context

Named query filters will help in scenarios where commonly used filters can be declared once and then enabled or disabled by name at runtime or during query construction.</issue_description>

Comments on the Issue (you are @copilot in this section)


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

…atibility

- Add ApplyQueryFilter overloads with filterName parameter (NET10_0_OR_GREATER)
- Add XML documentation to all ModelBuilderExtensions methods
- Create TinyHelpers.EntityFrameworkCore.Tests project with 12 unit tests
- Verify ApplyQueryFilter works with both base classes and interfaces
- Update README with interface usage and named query filter documentation

Co-authored-by: marcominerva <3522534+marcominerva@users.noreply.github.com>
@marcominerva marcominerva changed the base branch from master to develop March 11, 2026 20:13
@marcominerva marcominerva marked this pull request as ready for review March 11, 2026 20:13
Copilot AI review requested due to automatic review settings March 11, 2026 20:13
Copilot AI changed the title [WIP] Add support for named query filters in TinyHelpers.EntityFrameworkCore Add named query filter support for .NET 10+ and verify interface compatibility Mar 11, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds EF Core query-filter enhancements and verification around the TinyHelpers.EntityFrameworkCore helpers, including .NET 10 named query filter support and a dedicated test project.

Changes:

  • Added .NET 10+ “named query filter” overloads to ModelBuilderExtensions (behind NET10_0_OR_GREATER) and expanded XML docs.
  • Introduced a new TinyHelpers.EntityFrameworkCore.Tests project with unit tests covering interface/base-class filters, named filters, and entity-type discovery.
  • Updated TinyHelpers.EntityFrameworkCore README with interface and named-filter usage examples.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
TinyHelpers.slnx Adds the new EF Core test project to the solution.
tests/TinyHelpers.EntityFrameworkCore.Tests/Usings.cs Adds global xUnit using for the new test project.
tests/TinyHelpers.EntityFrameworkCore.Tests/TinyHelpers.EntityFrameworkCore.Tests.csproj Defines the new net10.0 EF Core test project and references the EF Core helpers project.
tests/TinyHelpers.EntityFrameworkCore.Tests/Extensions/ModelBuilderExtensionsTests.cs Adds unit tests for applying query filters (including named filters) and entity-type discovery.
src/TinyHelpers.EntityFrameworkCore/README.md Documents interface-based filters and named query filters (.NET 10+).
src/TinyHelpers.EntityFrameworkCore/Extensions/ModelBuilderExtensions.cs Adds named query filter overloads and improves XML documentation.

You can also share your feedback on Copilot code review. Take the survey.

Refactored entity type filtering to use GetEntityTypes<TEntity> and IsAssignableTo for improved robustness. Updated query filter property access to use EF.Property<T> for better EF Core query translation support. These changes enhance maintainability and align with EF Core best practices.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated no new comments.


You can also share your feedback on Copilot code review. Take the survey.

@marcominerva marcominerva merged commit 223cb4a into develop Mar 12, 2026
9 checks passed
@marcominerva marcominerva deleted the copilot/add-named-query-filters branch March 12, 2026 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for named query filters in TinyHelpers.EntityFrameworkCore (available only in .NET 10 and greater)

3 participants