Skip to content

Commit c038091

Browse files
Add provider-facing breaking changes for EF Core 11 (JsonPath, FindColumn, JSON element model, KeysUniqueAcrossSchemas, test reorganization)
Agent-Logs-Url: https://github.com/dotnet/EntityFramework.Docs/sessions/feefcdbc-0f3b-44ae-9c55-57ada2e8895e Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com>
1 parent 90d95b7 commit c038091

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

entity-framework/core/what-is-new/ef-core-11.0/provider-facing-changes.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Provider-facing changes in EF Core 11 (EF11) - EF Core
33
description: List of provider-facing changes introduced in Entity Framework Core 11 (EF11)
44
author: roji
5-
ms.date: 01/16/2026
5+
ms.date: 04/08/2026
66
uid: core/what-is-new/ef-core-11.0/provider-facing-changes
77
---
88

@@ -13,7 +13,13 @@ This page documents noteworthy changes in EF Core 11 which may affect EF provide
1313
## Changes
1414

1515
* Collation names are now quoted in SQL, like column and table names ([see #37462](https://github.com/dotnet/efcore/issues/37462)). If your database doesn't support collation name quoting, override `QuerySqlGenerator.VisitSql()` and `MigrationsSqlGenerator.ColumnDefinition()` to revert to the previous behavior, but it's recommended to implement some sort of restricted character validation.
16+
* The `JsonPath` property on `IColumnModification` and `ColumnModificationParameters` has changed from `string?` to the new structured `JsonPath` type ([PR #38038](https://github.com/dotnet/efcore/pull/38038)). The `JsonPath` class provides `Segments`, `Ordinals`, an `IsRoot` property, and an `AppendTo(StringBuilder)` method for rendering the JSONPATH string. Providers that override `UpdateSqlGenerator.AppendUpdateColumnValue()` or otherwise handle JSON partial updates should update their code to use this new type. Where previously you checked for `null` or `"$"`, use `JsonPath is not { IsRoot: false }` instead, and call `JsonPath.AppendTo(stringBuilder)` to write the JSONPATH string representation.
17+
* The `FindColumn` methods on `ITableBase`, `ITable`, `IView`, `ISqlQuery`, and `IStoreFunction` now accept `IPropertyBase` instead of `IProperty` ([PR #38038](https://github.com/dotnet/efcore/pull/38038)). This allows navigations and complex properties to be passed in addition to scalar properties. Providers that implement custom `FindColumn` overloads should update their parameter types accordingly.
18+
* JSON columns in the relational model now have a structured representation via new `IRelationalJsonElement`, `IRelationalJsonObject`, `IRelationalJsonArray`, and `IRelationalJsonScalar` interfaces ([PR #38038](https://github.com/dotnet/efcore/pull/38038)). Each `IColumnBase` now exposes a `JsonElement` property that provides access to the element tree for the column, with strongly-typed `JsonPath` properties containing placeholders for array indices.
19+
* `SharedTableConvention` has a new `KeysUniqueAcrossSchemas` virtual property that defaults to `true` ([PR #37861](https://github.com/dotnet/efcore/pull/37861)). Databases that scope constraint-name uniqueness per-schema (e.g. PostgreSQL) can override this to `false` to avoid unnecessary key constraint name renames across schemas.
20+
* Column mapping extension methods such as `GetColumnMappings()` and `GetViewColumnMappings()` now accept `IPropertyBase` instead of `IProperty`, allowing navigations to be passed ([PR #38038](https://github.com/dotnet/efcore/pull/38038)). A new `GetJsonElementMappings()` extension method has been added for accessing JSON element mappings on navigations and properties.
1621

1722
## Test changes
1823

1924
* The inheritance specification tests have been reorganized into a folder of their own ([PR](https://github.com/dotnet/efcore/pull/37410)).
25+
* Query test classes now support non-shared-model tests via a new `QueryFixtureBase` class that all query fixtures extend ([PR #37681](https://github.com/dotnet/efcore/pull/37681)). The previous pattern of extending `SharedStoreFixtureBase` and `IQueryFixtureBase` separately has been replaced. `NonSharedPrimitiveCollectionsQueryTestBase` has been merged into `PrimitiveCollectionsQueryTestBase`, and per-type array tests have been moved to `TypeTestBase.Primitive_collection_in_query`.

0 commit comments

Comments
 (0)