From 80caa20634935b4f3eebd88560eee08dd64ddf76 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 10 Jun 2026 19:19:47 +0000
Subject: [PATCH 1/6] Document EF Core 11 preview.6 features in What's New
---
entity-framework/core/cli/dotnet.md | 2 +-
.../core/providers/sqlite/functions.md | 2 +
.../core/what-is-new/ef-core-11.0/whatsnew.md | 58 ++++++++++++++++++-
3 files changed, 60 insertions(+), 2 deletions(-)
diff --git a/entity-framework/core/cli/dotnet.md b/entity-framework/core/cli/dotnet.md
index 1f0e66d35c..3dfc14687f 100644
--- a/entity-framework/core/cli/dotnet.md
+++ b/entity-framework/core/cli/dotnet.md
@@ -110,7 +110,7 @@ dotnet ef database update -- --environment Production
| Option | Short | Description |
|:-----------------------------------------------|:------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `--json` | | Show JSON output. |
-| `--context ` | `-c` | The `DbContext` class to use. Class name only or fully qualified with namespaces. If this option is omitted, EF Core will find the context class. If there are multiple context classes, this option is required. |
+| `--context ` | `-c` | The `DbContext` class to use. Class name only or fully qualified with namespaces. If this option is omitted, EF Core will find the context class. If there are multiple context classes, this option is required. Some commands (`migrations list`, `migrations script`, `database update`, and `database drop`) also accept `*` to target all `DbContext` classes in the project. |
| `--project ` | `-p` | Relative path to the project folder of the target project. Default value is the current folder. |
| `--startup-project ` | `-s` | Relative path to the project folder of the startup project. Default value is the current folder. |
| `--framework ` | | The [Target Framework Moniker](/dotnet/standard/frameworks#supported-target-framework-versions) for the [target framework](/dotnet/standard/frameworks). Use when the project file specifies multiple target frameworks, and you want to select one of them. |
diff --git a/entity-framework/core/providers/sqlite/functions.md b/entity-framework/core/providers/sqlite/functions.md
index bcc0c1e3a4..6725219b68 100644
--- a/entity-framework/core/providers/sqlite/functions.md
+++ b/entity-framework/core/providers/sqlite/functions.md
@@ -22,7 +22,9 @@ group.Min(x => x.Property) | MIN(Property)
group.Sum(x => x.Property) | SUM(Property)
group.Sum(x => x.DecimalProperty) | ef_sum(DecimalProperty) | EF Core 9.0
string.Concat(group.Select(x => x.Property)) | group_concat(Property, '')
+string.Concat(group.OrderBy(x => x.Other).Select(x => x.Property)) | group_concat(Property, '' ORDER BY Other) | EF Core 11.0
string.Join(separator, group.Select(x => x.Property)) | group_concat(Property, @separator)
+string.Join(separator, group.OrderBy(x => x.Other).Select(x => x.Property)) | group_concat(Property, @separator ORDER BY Other) | EF Core 11.0
## Binary functions
diff --git a/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md b/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
index e6b7735c57..8e5c7c24ca 100644
--- a/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
+++ b/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
@@ -2,7 +2,7 @@
title: What's New in EF Core 11
description: Overview of new features in EF Core 11
author: roji
-ms.date: 06/09/2026
+ms.date: 06/10/2026
uid: core/what-is-new/ef-core-11.0/whatsnew
---
@@ -624,6 +624,45 @@ For the complete list of date/time function translations, see the [SQL Server fu
* now defaults to compatibility level 160 (SQL Server 2022), enabling SQL Server 2022-specific translations such as `LEAST` and `GREATEST` by default; see the [breaking change note](xref:core/what-is-new/ef-core-11.0/breaking-changes#sqlserver-compatibility-level-160) for more information.
+## SQLite
+
+
+
+### Ordering in string aggregation
+
+EF Core can translate `string.Join` and `string.Concat` over a grouping to SQLite's `group_concat` aggregate function. Starting with EF 11, these translations also support ordering the aggregated values, by applying `OrderBy`/`OrderByDescending` inside the aggregate. Previously, queries that ordered the values fell back to client evaluation.
+
+For example, the following query concatenates each blog's post titles, ordered by descending post `Id`:
+
+```csharp
+var blogs = await context.Blogs
+ .Select(b => new
+ {
+ b.Name,
+ Posts = string.Join(
+ ", ",
+ b.Posts.OrderByDescending(p => p.Id).Select(p => p.Title))
+ })
+ .ToListAsync();
+```
+
+This translates to the following SQL, which uses `group_concat` with an `ORDER BY` clause:
+
+```sql
+SELECT "b"."Name", COALESCE(group_concat("p"."Title", ', ' ORDER BY "p"."Id" DESC), '') AS "Posts"
+FROM "Blogs" AS "b"
+LEFT JOIN "Posts" AS "p" ON "b"."Id" = "p"."BlogId"
+GROUP BY "b"."Id", "b"."Name"
+```
+
+Ordering inside `group_concat` requires SQLite 3.44.0 or later.
+
+
+
+### UInt128 support
+
+`Microsoft.Data.Sqlite` can now bind parameter values. The value is stored as a zero-padded, 39-digit text representation, which preserves correct ordering and comparison of values directly in the database.
+
## Cosmos DB
@@ -856,6 +895,23 @@ Explicit command-line options always take precedence over configuration file val
For more information, see [Configuration file](xref:core/cli/dotnet#configuration-file).
+
+
+### Wildcard context support for migration commands
+
+When a project defines multiple `DbContext` types, several `dotnet ef` commands accept a wildcard (`*`) as the value of the `--context` option to target all contexts at once, instead of running the command separately for each one. The commands that support the wildcard are:
+
+* `dotnet ef migrations list` — lists the migrations for every context.
+* `dotnet ef migrations script` — generates and concatenates a script for every context.
+* `dotnet ef database update` — applies migrations to the database of every context (migration bundles are covered as well).
+* `dotnet ef database drop` — drops the database for every context.
+
+For example, the following command lists the migrations for all contexts in the project:
+
+```dotnetcli
+dotnet ef migrations list --context "*"
+```
+
## Other improvements
* The EF command-line tool now writes all logging and status messages to standard error, reserving standard output only for the command's actual expected output. For example, when generating a migration SQL script with `dotnet ef migrations script`, only the SQL is written to standard output.
From fbd1bd68531583248c08f16ab8ace7140d7f608a Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 10 Jun 2026 21:09:52 +0000
Subject: [PATCH 2/6] Fix docs: UInt128 data reader note, move lambda chaining
to Cosmos DB section, fix broken links
---
.../core/learn-more/community-standups.md | 2 +-
.../ef-core-11.0/breaking-changes.md | 2 +-
.../core/what-is-new/ef-core-11.0/whatsnew.md | 48 +++++++++----------
.../ef-core-6.0/breaking-changes.md | 2 +-
4 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/entity-framework/core/learn-more/community-standups.md b/entity-framework/core/learn-more/community-standups.md
index d53d04be43..eac4c81958 100644
--- a/entity-framework/core/learn-more/community-standups.md
+++ b/entity-framework/core/learn-more/community-standups.md
@@ -420,7 +420,7 @@ Featuring:
Links:
- Product: [Hot Chocolate for GraphQL](https://chillicream.com/docs/hotchocolate)
-- Docs: [Hot Chocolate and Entity Framework Core](https://chillicream.com/docs/hotchocolate/integrations/entity-framework)
+- Docs: [Hot Chocolate and Entity Framework Core](https://chillicream.com/docs/hotchocolate/v14/integrations/entity-framework)
diff --git a/entity-framework/core/what-is-new/ef-core-11.0/breaking-changes.md b/entity-framework/core/what-is-new/ef-core-11.0/breaking-changes.md
index d2b096990e..653592f09d 100644
--- a/entity-framework/core/what-is-new/ef-core-11.0/breaking-changes.md
+++ b/entity-framework/core/what-is-new/ef-core-11.0/breaking-changes.md
@@ -122,7 +122,7 @@ If your application uses composite keys whose values can contain the characters
- **Existing data**: Documents previously stored in Cosmos DB have `id` values using the old escape sequences (e.g. `Post|1|^2F`). After upgrading to EF Core 11, EF will generate unescaped `id` values (e.g. `Post|1|/`) and will no longer find those existing documents. To continue accessing existing data without migration, opt back into the old behavior using the `AppContext` switch described above—however, be aware that the id-collision bug will still be present.
-- **New data**: If you are creating a new application or database, avoid using these illegal characters in key values, as they are not valid in Cosmos DB resource `id` values. See the [Azure documentation](https://learn.microsoft.com/dotnet/api/microsoft.azure.documents.resource.id) for details.
+- **New data**: If you are creating a new application or database, avoid using these illegal characters in key values, as they are not valid in Cosmos DB resource `id` values. See the [Azure documentation](/dotnet/api/microsoft.azure.documents.resource.id) for details.
## Low-impact changes
diff --git a/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md b/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
index 8e5c7c24ca..5dc307ee6c 100644
--- a/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
+++ b/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
@@ -83,29 +83,6 @@ For more information on inheritance mapping strategies, see [Inheritance](xref:c
Complex types are now fully supported in the Azure Cosmos DB provider, embedded as nested JSON objects or arrays. For more information, [see the Cosmos DB section below](#cosmos-complex-types).
-
-
-### Configuring complex type properties via lambda chaining
-
-Previously, configuring a property on a complex type required first calling `ComplexProperty` to get the complex type builder, and then calling `Property` on it:
-
-```csharp
-modelBuilder.Entity()
- .ComplexProperty(e => e.Details)
- .Property(d => d.Description)
- .HasMaxLength(500);
-```
-
-EF Core 11 now allows configuring complex type properties directly by chaining member access in the lambda expression passed to `Property`:
-
-```csharp
-modelBuilder.Entity()
- .Property(e => e.Details.Description)
- .HasMaxLength(500);
-```
-
-This simplifies model configuration by removing the need to explicitly navigate through intermediate complex type builders to reach the property you want to configure.
-
### Keys and indexes on complex type properties
@@ -661,7 +638,7 @@ Ordering inside `group_concat` requires SQLite 3.44.0 or later.
### UInt128 support
-`Microsoft.Data.Sqlite` can now bind parameter values. The value is stored as a zero-padded, 39-digit text representation, which preserves correct ordering and comparison of values directly in the database.
+`Microsoft.Data.Sqlite` can now bind parameter values. The value is stored as a zero-padded, 39-digit text representation, which preserves correct ordering and comparison of values directly in the database. Note that reading values from data readers is not yet supported.
## Cosmos DB
@@ -697,6 +674,29 @@ Complex types are generally a better fit than owned types when mapping to JSON d
This feature was contributed by [@JoasE](https://github.com/JoasE) - many thanks!
+
+
+### Configuring complex type properties via lambda chaining
+
+Previously, configuring a property on a complex type required first calling `ComplexProperty` to get the complex type builder, and then calling `Property` on it:
+
+```csharp
+modelBuilder.Entity()
+ .ComplexProperty(e => e.Details)
+ .Property(d => d.Description)
+ .HasMaxLength(500);
+```
+
+EF Core 11 now allows configuring complex type properties directly by chaining member access in the lambda expression passed to `Property`:
+
+```csharp
+modelBuilder.Entity()
+ .Property(e => e.Details.Description)
+ .HasMaxLength(500);
+```
+
+This simplifies model configuration by removing the need to explicitly navigate through intermediate complex type builders to reach the property you want to configure.
+
### Indexes and indexing policy
diff --git a/entity-framework/core/what-is-new/ef-core-6.0/breaking-changes.md b/entity-framework/core/what-is-new/ef-core-6.0/breaking-changes.md
index b8ab08ccfc..7f2dab4891 100644
--- a/entity-framework/core/what-is-new/ef-core-6.0/breaking-changes.md
+++ b/entity-framework/core/what-is-new/ef-core-6.0/breaking-changes.md
@@ -428,7 +428,7 @@ If your application expects joined entities to be returned in a particular order
#### Why
- was originally made to implement mainly in order to allow direct enumeration on it via the `foreach` construct. Unfortunately, when a project also references [System.Linq.Async](https://www.nuget.org/packages/System.Linq.Async) in order to compose async LINQ operators client-side, this resulted in an ambiguous invocation error between the operators defined over `IQueryable` and those defined over `IAsyncEnumerable`. C# 9 added [extension `GetEnumerator` support for `foreach` loops](/dotnet/csharp/language-reference/proposals/csharp-9.0/extension-getenumerator), removing the original main reason to reference `IAsyncEnumerable`.
+ was originally made to implement mainly in order to allow direct enumeration on it via the `foreach` construct. Unfortunately, when a project also references [System.Linq.Async](https://www.nuget.org/packages/System.Linq.Async) in order to compose async LINQ operators client-side, this resulted in an ambiguous invocation error between the operators defined over `IQueryable` and those defined over `IAsyncEnumerable`. C# 9 added [extension `GetEnumerator` support for `foreach` loops](https://github.com/dotnet/csharplang/blob/main/proposals/csharp-9.0/extension-getenumerator.md), removing the original main reason to reference `IAsyncEnumerable`.
The vast majority of `DbSet` usages will continue to work as-is, since they compose LINQ operators over `DbSet`, enumerate it, etc. The only usages broken are those which attempt to cast `DbSet` directly to `IAsyncEnumerable`.
From 4c20c81ccd95ed154c04bb3e3a483f3131489eb4 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 10 Jun 2026 21:10:34 +0000
Subject: [PATCH 3/6] Format UInt128 note using DocFX note block
---
entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md b/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
index 5dc307ee6c..a2ee359d25 100644
--- a/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
+++ b/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
@@ -638,7 +638,10 @@ Ordering inside `group_concat` requires SQLite 3.44.0 or later.
### UInt128 support
-`Microsoft.Data.Sqlite` can now bind parameter values. The value is stored as a zero-padded, 39-digit text representation, which preserves correct ordering and comparison of values directly in the database. Note that reading values from data readers is not yet supported.
+`Microsoft.Data.Sqlite` can now bind parameter values. The value is stored as a zero-padded, 39-digit text representation, which preserves correct ordering and comparison of values directly in the database.
+
+> [!NOTE]
+> Reading values from data readers is not yet supported.
## Cosmos DB
From a90e1ae3b4d1f0f111f7e8086b35cb61db4901d9 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 10 Jun 2026 21:23:51 +0000
Subject: [PATCH 4/6] Revert change to cli/dotnet.md
---
entity-framework/core/cli/dotnet.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/entity-framework/core/cli/dotnet.md b/entity-framework/core/cli/dotnet.md
index 3dfc14687f..1f0e66d35c 100644
--- a/entity-framework/core/cli/dotnet.md
+++ b/entity-framework/core/cli/dotnet.md
@@ -110,7 +110,7 @@ dotnet ef database update -- --environment Production
| Option | Short | Description |
|:-----------------------------------------------|:------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `--json` | | Show JSON output. |
-| `--context ` | `-c` | The `DbContext` class to use. Class name only or fully qualified with namespaces. If this option is omitted, EF Core will find the context class. If there are multiple context classes, this option is required. Some commands (`migrations list`, `migrations script`, `database update`, and `database drop`) also accept `*` to target all `DbContext` classes in the project. |
+| `--context ` | `-c` | The `DbContext` class to use. Class name only or fully qualified with namespaces. If this option is omitted, EF Core will find the context class. If there are multiple context classes, this option is required. |
| `--project ` | `-p` | Relative path to the project folder of the target project. Default value is the current folder. |
| `--startup-project ` | `-s` | Relative path to the project folder of the startup project. Default value is the current folder. |
| `--framework ` | | The [Target Framework Moniker](/dotnet/standard/frameworks#supported-target-framework-versions) for the [target framework](/dotnet/standard/frameworks). Use when the project file specifies multiple target frameworks, and you want to select one of them. |
From a2b1df626150a1aec560f4177664f3cdc55826f9 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 10 Jun 2026 21:41:22 +0000
Subject: [PATCH 5/6] Move complex type property lambda chaining section to
general Complex types
---
.../core/what-is-new/ef-core-11.0/whatsnew.md | 46 +++++++++----------
1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md b/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
index a2ee359d25..a7ac1bdea6 100644
--- a/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
+++ b/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
@@ -116,6 +116,29 @@ modelBuilder.Entity()
For more information, see [Keys](xref:core/modeling/keys#keys-on-complex-type-properties) and [Indexes](xref:core/modeling/indexes#indexes-on-complex-type-properties).
+
+
+### Configuring complex type properties via lambda chaining
+
+Previously, configuring a property on a complex type required first calling `ComplexProperty` to get the complex type builder, and then calling `Property` on it:
+
+```csharp
+modelBuilder.Entity()
+ .ComplexProperty(e => e.Details)
+ .Property(d => d.Description)
+ .HasMaxLength(500);
+```
+
+EF Core 11 now allows configuring complex type properties directly by chaining member access in the lambda expression passed to `Property`:
+
+```csharp
+modelBuilder.Entity()
+ .Property(e => e.Details.Description)
+ .HasMaxLength(500);
+```
+
+This simplifies model configuration by removing the need to explicitly navigate through intermediate complex type builders to reach the property you want to configure.
+
### Stabilization and bug fixes
@@ -677,29 +700,6 @@ Complex types are generally a better fit than owned types when mapping to JSON d
This feature was contributed by [@JoasE](https://github.com/JoasE) - many thanks!
-
-
-### Configuring complex type properties via lambda chaining
-
-Previously, configuring a property on a complex type required first calling `ComplexProperty` to get the complex type builder, and then calling `Property` on it:
-
-```csharp
-modelBuilder.Entity()
- .ComplexProperty(e => e.Details)
- .Property(d => d.Description)
- .HasMaxLength(500);
-```
-
-EF Core 11 now allows configuring complex type properties directly by chaining member access in the lambda expression passed to `Property`:
-
-```csharp
-modelBuilder.Entity()
- .Property(e => e.Details.Description)
- .HasMaxLength(500);
-```
-
-This simplifies model configuration by removing the need to explicitly navigate through intermediate complex type builders to reach the property you want to configure.
-
### Indexes and indexing policy
From 9b80493e10da62443a312416714f9d029973ddca Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 10 Jun 2026 22:06:12 +0000
Subject: [PATCH 6/6] Move lambda chaining section before Keys and indexes on
complex type properties
---
.../core/what-is-new/ef-core-11.0/whatsnew.md | 46 +++++++++----------
1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md b/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
index a7ac1bdea6..8313236d2b 100644
--- a/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
+++ b/entity-framework/core/what-is-new/ef-core-11.0/whatsnew.md
@@ -83,6 +83,29 @@ For more information on inheritance mapping strategies, see [Inheritance](xref:c
Complex types are now fully supported in the Azure Cosmos DB provider, embedded as nested JSON objects or arrays. For more information, [see the Cosmos DB section below](#cosmos-complex-types).
+
+
+### Configuring complex type properties via lambda chaining
+
+Previously, configuring a property on a complex type required first calling `ComplexProperty` to get the complex type builder, and then calling `Property` on it:
+
+```csharp
+modelBuilder.Entity()
+ .ComplexProperty(e => e.Details)
+ .Property(d => d.Description)
+ .HasMaxLength(500);
+```
+
+EF Core 11 now allows configuring complex type properties directly by chaining member access in the lambda expression passed to `Property`:
+
+```csharp
+modelBuilder.Entity()
+ .Property(e => e.Details.Description)
+ .HasMaxLength(500);
+```
+
+This simplifies model configuration by removing the need to explicitly navigate through intermediate complex type builders to reach the property you want to configure.
+
### Keys and indexes on complex type properties
@@ -116,29 +139,6 @@ modelBuilder.Entity()
For more information, see [Keys](xref:core/modeling/keys#keys-on-complex-type-properties) and [Indexes](xref:core/modeling/indexes#indexes-on-complex-type-properties).
-
-
-### Configuring complex type properties via lambda chaining
-
-Previously, configuring a property on a complex type required first calling `ComplexProperty` to get the complex type builder, and then calling `Property` on it:
-
-```csharp
-modelBuilder.Entity()
- .ComplexProperty(e => e.Details)
- .Property(d => d.Description)
- .HasMaxLength(500);
-```
-
-EF Core 11 now allows configuring complex type properties directly by chaining member access in the lambda expression passed to `Property`:
-
-```csharp
-modelBuilder.Entity()
- .Property(e => e.Details.Description)
- .HasMaxLength(500);
-```
-
-This simplifies model configuration by removing the need to explicitly navigate through intermediate complex type builders to reach the property you want to configure.
-
### Stabilization and bug fixes