dotnet / dotnet/efcore

EF.Parameter or setting ParameterTranslationMode.Parameter doesn't work with IReadOnlySet

Open
#38,671 2 comments 0 reactions 0 assignees View on GitHub
area-query customer-reported
Dominant language
C#
Stars
14.8k
Forks
3.4k
PR merge metrics
PR metrics pending

Description

### Bug description

Unfortunately `IReadOnlySet` is not translated into a single parameter with using OPENJSON.

The generated SQL for the list filter:

``` SQL
SELECT [b].[BlogId]
FROM [Blogs] AS [b]
WHERE [b].[BlogId] IN (
SELECT [f].[value]
FROM OPENJSON(@filterAsList) WITH ([value] int '$') AS [f]
)
```

The generated SQL for IReadOnlySet filter:

``` SQL
SELECT [b].[BlogId]
FROM [Blogs] AS [b]
WHERE [b].[BlogId] IN (@filterAsSet1, @filterAsSet2)
```

### Your code

```csharp
using Microsoft.EntityFrameworkCore;

using var dbContext = new BloggingContext();
dbContext.Database.EnsureDeleted();
dbContext.Database.EnsureCreated();

List filterAsList = [1, 2];
IReadOnlySet filterAsSet = filterAsList.ToHashSet();

var queryWithListFilter = await dbContext
.Set()
.Where(b => filterAsList.Contains(b.BlogId))
.ToListAsync();

var queryWithSetFilter = await dbContext
.Set()
.Where(b => filterAsSet.Contains(b.BlogId))
.ToListAsync();

class BloggingContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) =>
optionsBuilder
.UseSqlServer(
"Server=(localdb)\\mssqllocaldb;Database=OpenJsonBug;Trusted_Connection=True;",
options =>
options.UseParameterizedCollectionMode(ParameterTranslationMode.Parameter)
)
.LogTo(Console.WriteLine);

public DbSet Blogs { get; set; }
}

public class Blog
{
public int BlogId { get; set; }
}
```

### Stack traces

```text

```

### Verbose output

```text
dbug: 19.07.2026 21:14:19.137 CoreEventId.ContextInitialized[10403] (Microsoft.EntityFrameworkCore.Infrastructure)
Entity Framework Core 10.0.10 initialized 'BloggingContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer:10.0.10' with options: ParameterizedCollectionTranslationMode=Parameter EngineType=SqlServer
dbug: 19.07.2026 21:14:19.144 RelationalEventId.ConnectionCreating[20005] (Microsoft.EntityFrameworkCore.Database.Connection)
Creating DbConnection.
dbug: 19.07.2026 21:14:19.158 RelationalEventId.ConnectionCreated[20006] (Microsoft.EntityFrameworkCore.Database.Connection)
Created DbConnection. (12ms).
dbug: 19.07.2026 21:14:19.160 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
Opening connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.269 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
Opened connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.271 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
Creating DbCommand for 'ExecuteNonQuery'.
dbug: 19.07.2026 21:14:19.274 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
Created DbCommand for 'ExecuteNonQuery' (2ms).
dbug: 19.07.2026 21:14:19.274 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
Initialized DbCommand for 'ExecuteNonQuery' (4ms).
dbug: 19.07.2026 21:14:19.276 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT 1
info: 19.07.2026 21:14:19.285 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
Executed DbCommand (9ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT 1
dbug: 19.07.2026 21:14:19.286 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
Closing connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.289 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
Closed connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb' (2ms).
dbug: 19.07.2026 21:14:19.297 RelationalEventId.ConnectionCreating[20005] (Microsoft.EntityFrameworkCore.Database.Connection)
Creating DbConnection.
dbug: 19.07.2026 21:14:19.297 RelationalEventId.ConnectionCreated[20006] (Microsoft.EntityFrameworkCore.Database.Connection)
Created DbConnection. (0ms).
dbug: 19.07.2026 21:14:19.297 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
Opening connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.299 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
Opened connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.299 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
Creating DbCommand for 'ExecuteNonQuery'.
dbug: 19.07.2026 21:14:19.299 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.300 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.300 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='60']
IF SERVERPROPERTY('EngineEdition') <> 5
BEGIN
ALTER DATABASE [OpenJsonBug] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
END;
info: 19.07.2026 21:14:19.301 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
IF SERVERPROPERTY('EngineEdition') <> 5
BEGIN
ALTER DATABASE [OpenJsonBug] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
END;
dbug: 19.07.2026 21:14:19.301 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
Creating DbCommand for 'ExecuteNonQuery'.
dbug: 19.07.2026 21:14:19.301 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.301 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.301 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='60']
DROP DATABASE [OpenJsonBug];
info: 19.07.2026 21:14:19.313 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
Executed DbCommand (11ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
DROP DATABASE [OpenJsonBug];
dbug: 19.07.2026 21:14:19.313 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
Closing connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.313 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
Closed connection to database 'master' on server '(localdb)\mssqllocaldb' (0ms).
dbug: 19.07.2026 21:14:19.314 RelationalEventId.ConnectionDisposing[20007] (Microsoft.EntityFrameworkCore.Database.Connection)
Disposing connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.314 RelationalEventId.ConnectionDisposed[20008] (Microsoft.EntityFrameworkCore.Database.Connection)
Disposed connection to database '' on server '' (0ms).
dbug: 19.07.2026 21:14:19.315 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
Opening connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.319 RelationalEventId.ConnectionError[20004] (Microsoft.EntityFrameworkCore.Database.Connection)
An error occurred using the connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.341 RelationalEventId.ConnectionCreating[20005] (Microsoft.EntityFrameworkCore.Database.Connection)
Creating DbConnection.
dbug: 19.07.2026 21:14:19.341 RelationalEventId.ConnectionCreated[20006] (Microsoft.EntityFrameworkCore.Database.Connection)
Created DbConnection. (0ms).
dbug: 19.07.2026 21:14:19.341 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
Opening connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.341 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
Opened connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.341 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
Creating DbCommand for 'ExecuteNonQuery'.
dbug: 19.07.2026 21:14:19.341 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.341 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.341 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='60']
CREATE DATABASE [OpenJsonBug];
info: 19.07.2026 21:14:19.414 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
Executed DbCommand (73ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
CREATE DATABASE [OpenJsonBug];
dbug: 19.07.2026 21:14:19.415 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
Creating DbCommand for 'ExecuteNonQuery'.
dbug: 19.07.2026 21:14:19.415 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.415 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.415 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='60']
IF SERVERPROPERTY('EngineEdition') <> 5
BEGIN
ALTER DATABASE [OpenJsonBug] SET READ_COMMITTED_SNAPSHOT ON;
END;
info: 19.07.2026 21:14:19.445 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
Executed DbCommand (30ms) [Parameters=[], CommandType='Text', CommandTimeout='60']
IF SERVERPROPERTY('EngineEdition') <> 5
BEGIN
ALTER DATABASE [OpenJsonBug] SET READ_COMMITTED_SNAPSHOT ON;
END;
dbug: 19.07.2026 21:14:19.445 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
Closing connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.445 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
Closed connection to database 'master' on server '(localdb)\mssqllocaldb' (0ms).
dbug: 19.07.2026 21:14:19.446 RelationalEventId.ConnectionDisposing[20007] (Microsoft.EntityFrameworkCore.Database.Connection)
Disposing connection to database 'master' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.446 RelationalEventId.ConnectionDisposed[20008] (Microsoft.EntityFrameworkCore.Database.Connection)
Disposed connection to database '' on server '' (0ms).
dbug: 19.07.2026 21:14:19.446 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
Opening connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.449 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
Opened connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.449 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
Creating DbCommand for 'ExecuteNonQuery'.
dbug: 19.07.2026 21:14:19.449 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.449 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.449 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT 1
info: 19.07.2026 21:14:19.449 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
Executed DbCommand (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT 1
dbug: 19.07.2026 21:14:19.449 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
Closing connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.449 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
Closed connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb' (0ms).
dbug: 19.07.2026 21:14:19.475 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
Opening connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.475 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
Opened connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.476 RelationalEventId.TransactionStarting[20209] (Microsoft.EntityFrameworkCore.Database.Transaction)
Beginning transaction with isolation level 'Unspecified'.
dbug: 19.07.2026 21:14:19.479 RelationalEventId.TransactionStarted[20200] (Microsoft.EntityFrameworkCore.Database.Transaction)
Began transaction with isolation level 'ReadCommitted'.
dbug: 19.07.2026 21:14:19.479 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
Creating DbCommand for 'ExecuteNonQuery'.
dbug: 19.07.2026 21:14:19.479 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
Created DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.479 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
Initialized DbCommand for 'ExecuteNonQuery' (0ms).
dbug: 19.07.2026 21:14:19.479 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
Executing DbCommand [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE [Blogs] (
[BlogId] int NOT NULL IDENTITY,
CONSTRAINT [PK_Blogs] PRIMARY KEY ([BlogId])
);
info: 19.07.2026 21:14:19.483 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
Executed DbCommand (3ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE [Blogs] (
[BlogId] int NOT NULL IDENTITY,
CONSTRAINT [PK_Blogs] PRIMARY KEY ([BlogId])
);
dbug: 19.07.2026 21:14:19.483 RelationalEventId.TransactionCommitting[20210] (Microsoft.EntityFrameworkCore.Database.Transaction)
Committing transaction.
dbug: 19.07.2026 21:14:19.485 RelationalEventId.TransactionCommitted[20202] (Microsoft.EntityFrameworkCore.Database.Transaction)
Committed transaction.
dbug: 19.07.2026 21:14:19.486 RelationalEventId.TransactionDisposed[20204] (Microsoft.EntityFrameworkCore.Database.Transaction)
Disposing transaction.
dbug: 19.07.2026 21:14:19.486 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
Closing connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.486 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
Closed connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb' (0ms).
dbug: 19.07.2026 21:14:19.503 CoreEventId.QueryCompilationStarting[10111] (Microsoft.EntityFrameworkCore.Query)
Compiling query expression:
'DbSet()
.Where(b => @filterAsList.Contains(b.BlogId))'
dbug: 19.07.2026 21:14:19.618 CoreEventId.QueryExecutionPlanned[10107] (Microsoft.EntityFrameworkCore.Query)
Generated query execution expression:
'queryContext => SingleQueryingEnumerable.Create(
relationalQueryContext: (RelationalQueryContext)queryContext,
relationalCommandResolver: parameters => [LIFTABLE Constant: RelationalCommandCache.QueryExpression(
Projection Mapping:
EmptyProjectionMember -> Dictionary { [Property: Blog.BlogId (int) Required PK AfterSave:Throw ValueGenerated.OnAdd, 0] }
SELECT b.BlogId
FROM Blogs AS b
WHERE b.BlogId IN (
SELECT f.value
FROM OPENJSON(@filterAsList) WITH (value int '') AS f)) | Resolver: c => new RelationalCommandCache(
c.Dependencies.MemoryCache,
c.RelationalDependencies.QuerySqlGeneratorFactory,
c.RelationalDependencies.RelationalParameterBasedSqlProcessorFactory,
Projection Mapping:
EmptyProjectionMember -> Dictionary { [Property: Blog.BlogId (int) Required PK AfterSave:Throw ValueGenerated.OnAdd, 0] }
SELECT b.BlogId
FROM Blogs AS b
WHERE b.BlogId IN (
SELECT f.value
FROM OPENJSON(@filterAsList) WITH (value int '') AS f),
False,
Parameter
)].GetRelationalCommandTemplate(parameters),
readerColumns: null,
shaper: (queryContext, dataReader, resultContext, resultCoordinator) =>
{
Blog entity;
entity =
{
MaterializationContext materializationContext1;
IEntityType entityType1;
Blog instance1;
InternalEntityEntry entry1;
bool hasNullKey1;
materializationContext1 = new MaterializationContext(
[LIFTABLE Constant: ValueBuffer | Resolver: _ => (object)ValueBuffer.Empty],
queryContext.Context
);
instance1 = default(Blog);
entry1 = queryContext.TryGetEntry(
key: [LIFTABLE Constant: Key: Blog.BlogId PK | Resolver: c => c.Dependencies.Model.FindEntityType("Blog").FindPrimaryKey()],
keyValues: new object[]{ (object)dataReader.GetInt32(0) },
throwOnNullKey: True,
hasNullKey: hasNullKey1);
!(hasNullKey1) ? entry1 != default(InternalEntityEntry) ?
{
entityType1 = entry1.EntityType;
return instance1 = (Blog)entry1.Entity;
} :
{
ISnapshot shadowSnapshot1;
shadowSnapshot1 = [LIFTABLE Constant: Snapshot | Resolver: _ => Snapshot.Empty];
entityType1 = [LIFTABLE Constant: EntityType: Blog | Resolver: namelessParameter{0} => namelessParameter{0}.Dependencies.Model.FindEntityType("Blog")];
instance1 = switch (entityType1)
{
case [LIFTABLE Constant: EntityType: Blog | Resolver: namelessParameter{1} => namelessParameter{1}.Dependencies.Model.FindEntityType("Blog")]:
{
return
{
Blog instance;
instance = new Blog();
instance.k__BackingField = dataReader.GetInt32(0);
(instance is IInjectableService) ? ((IInjectableService)instance).Injected(
context: materializationContext1.Context,
entity: instance,
queryTrackingBehavior: TrackAll,
structuralType: [LIFTABLE Constant: EntityType: Blog | Resolver: namelessParameter{2} => namelessParameter{2}.Dependencies.Model.FindEntityType("Blog")]) : default(void);
return instance;
}}
default:
default(Blog)
}
;
entry1 = entityType1 == default(IEntityType) ? default(InternalEntityEntry) : queryContext.StartTracking(
entityType: entityType1,
entity: instance1,
snapshot: shadowSnapshot1);
return instance1;
} : default(void);
return instance1;
};
return entity;
},
contextType: BloggingContext,
standAloneStateManager: False,
detailedErrorsEnabled: False,
threadSafetyChecksEnabled: True)'
dbug: 19.07.2026 21:14:19.634 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
Opening connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.635 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
Opened connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.635 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
Creating DbCommand for 'ExecuteReader'.
dbug: 19.07.2026 21:14:19.635 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
Created DbCommand for 'ExecuteReader' (0ms).
dbug: 19.07.2026 21:14:19.640 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
Initialized DbCommand for 'ExecuteReader' (4ms).
dbug: 19.07.2026 21:14:19.641 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
Executing DbCommand [Parameters=[@filterAsList='?' (Size = 4000)], CommandType='Text', CommandTimeout='30']
SELECT [b].[BlogId]
FROM [Blogs] AS [b]
WHERE [b].[BlogId] IN (
SELECT [f].[value]
FROM OPENJSON(@filterAsList) WITH ([value] int '$') AS [f]
)
info: 19.07.2026 21:14:19.656 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
Executed DbCommand (16ms) [Parameters=[@filterAsList='?' (Size = 4000)], CommandType='Text', CommandTimeout='30']
SELECT [b].[BlogId]
FROM [Blogs] AS [b]
WHERE [b].[BlogId] IN (
SELECT [f].[value]
FROM OPENJSON(@filterAsList) WITH ([value] int '$') AS [f]
)
dbug: 19.07.2026 21:14:19.661 RelationalEventId.DataReaderClosing[20301] (Microsoft.EntityFrameworkCore.Database.Command)
Closing data reader to 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.662 RelationalEventId.DataReaderDisposing[20300] (Microsoft.EntityFrameworkCore.Database.Command)
A data reader for 'OpenJsonBug' on server '(localdb)\mssqllocaldb' is being disposed after spending 5ms reading results.
dbug: 19.07.2026 21:14:19.663 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
Closing connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.663 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
Closed connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb' (0ms).
dbug: 19.07.2026 21:14:19.664 CoreEventId.QueryCompilationStarting[10111] (Microsoft.EntityFrameworkCore.Query)
Compiling query expression:
'DbSet()
.Where(b => @filterAsSet.Contains(b.BlogId))'
dbug: 19.07.2026 21:14:19.674 CoreEventId.QueryExecutionPlanned[10107] (Microsoft.EntityFrameworkCore.Query)
Generated query execution expression:
'queryContext => SingleQueryingEnumerable.Create(
relationalQueryContext: (RelationalQueryContext)queryContext,
relationalCommandResolver: parameters => [LIFTABLE Constant: RelationalCommandCache.QueryExpression(
Projection Mapping:
EmptyProjectionMember -> Dictionary { [Property: Blog.BlogId (int) Required PK AfterSave:Throw ValueGenerated.OnAdd, 0] }
SELECT b.BlogId
FROM Blogs AS b
WHERE b.BlogId IN (@filterAsSet)) | Resolver: c => new RelationalCommandCache(
c.Dependencies.MemoryCache,
c.RelationalDependencies.QuerySqlGeneratorFactory,
c.RelationalDependencies.RelationalParameterBasedSqlProcessorFactory,
Projection Mapping:
EmptyProjectionMember -> Dictionary { [Property: Blog.BlogId (int) Required PK AfterSave:Throw ValueGenerated.OnAdd, 0] }
SELECT b.BlogId
FROM Blogs AS b
WHERE b.BlogId IN (@filterAsSet),
False,
Parameter
)].GetRelationalCommandTemplate(parameters),
readerColumns: null,
shaper: (queryContext, dataReader, resultContext, resultCoordinator) =>
{
Blog entity;
entity =
{
MaterializationContext materializationContext1;
IEntityType entityType1;
Blog instance1;
InternalEntityEntry entry1;
bool hasNullKey1;
materializationContext1 = new MaterializationContext(
[LIFTABLE Constant: ValueBuffer | Resolver: _ => (object)ValueBuffer.Empty],
queryContext.Context
);
instance1 = default(Blog);
entry1 = queryContext.TryGetEntry(
key: [LIFTABLE Constant: Key: Blog.BlogId PK | Resolver: c => c.Dependencies.Model.FindEntityType("Blog").FindPrimaryKey()],
keyValues: new object[]{ (object)dataReader.GetInt32(0) },
throwOnNullKey: True,
hasNullKey: hasNullKey1);
!(hasNullKey1) ? entry1 != default(InternalEntityEntry) ?
{
entityType1 = entry1.EntityType;
return instance1 = (Blog)entry1.Entity;
} :
{
ISnapshot shadowSnapshot1;
shadowSnapshot1 = [LIFTABLE Constant: Snapshot | Resolver: _ => Snapshot.Empty];
entityType1 = [LIFTABLE Constant: EntityType: Blog | Resolver: namelessParameter{0} => namelessParameter{0}.Dependencies.Model.FindEntityType("Blog")];
instance1 = switch (entityType1)
{
case [LIFTABLE Constant: EntityType: Blog | Resolver: namelessParameter{1} => namelessParameter{1}.Dependencies.Model.FindEntityType("Blog")]:
{
return
{
Blog instance;
instance = new Blog();
instance.k__BackingField = dataReader.GetInt32(0);
(instance is IInjectableService) ? ((IInjectableService)instance).Injected(
context: materializationContext1.Context,
entity: instance,
queryTrackingBehavior: TrackAll,
structuralType: [LIFTABLE Constant: EntityType: Blog | Resolver: namelessParameter{2} => namelessParameter{2}.Dependencies.Model.FindEntityType("Blog")]) : default(void);
return instance;
}}
default:
default(Blog)
}
;
entry1 = entityType1 == default(IEntityType) ? default(InternalEntityEntry) : queryContext.StartTracking(
entityType: entityType1,
entity: instance1,
snapshot: shadowSnapshot1);
return instance1;
} : default(void);
return instance1;
};
return entity;
},
contextType: BloggingContext,
standAloneStateManager: False,
detailedErrorsEnabled: False,
threadSafetyChecksEnabled: True)'
dbug: 19.07.2026 21:14:19.677 RelationalEventId.ConnectionOpening[20000] (Microsoft.EntityFrameworkCore.Database.Connection)
Opening connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.677 RelationalEventId.ConnectionOpened[20001] (Microsoft.EntityFrameworkCore.Database.Connection)
Opened connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.677 RelationalEventId.CommandCreating[20103] (Microsoft.EntityFrameworkCore.Database.Command)
Creating DbCommand for 'ExecuteReader'.
dbug: 19.07.2026 21:14:19.677 RelationalEventId.CommandCreated[20104] (Microsoft.EntityFrameworkCore.Database.Command)
Created DbCommand for 'ExecuteReader' (0ms).
dbug: 19.07.2026 21:14:19.677 RelationalEventId.CommandInitialized[20106] (Microsoft.EntityFrameworkCore.Database.Command)
Initialized DbCommand for 'ExecuteReader' (0ms).
dbug: 19.07.2026 21:14:19.677 RelationalEventId.CommandExecuting[20100] (Microsoft.EntityFrameworkCore.Database.Command)
Executing DbCommand [Parameters=[@filterAsSet1='?' (DbType = Int32), @filterAsSet2='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT [b].[BlogId]
FROM [Blogs] AS [b]
WHERE [b].[BlogId] IN (@filterAsSet1, @filterAsSet2)
info: 19.07.2026 21:14:19.678 RelationalEventId.CommandExecuted[20101] (Microsoft.EntityFrameworkCore.Database.Command)
Executed DbCommand (1ms) [Parameters=[@filterAsSet1='?' (DbType = Int32), @filterAsSet2='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT [b].[BlogId]
FROM [Blogs] AS [b]
WHERE [b].[BlogId] IN (@filterAsSet1, @filterAsSet2)
dbug: 19.07.2026 21:14:19.678 RelationalEventId.DataReaderClosing[20301] (Microsoft.EntityFrameworkCore.Database.Command)
Closing data reader to 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.678 RelationalEventId.DataReaderDisposing[20300] (Microsoft.EntityFrameworkCore.Database.Command)
A data reader for 'OpenJsonBug' on server '(localdb)\mssqllocaldb' is being disposed after spending 0ms reading results.
dbug: 19.07.2026 21:14:19.678 RelationalEventId.ConnectionClosing[20002] (Microsoft.EntityFrameworkCore.Database.Connection)
Closing connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.678 RelationalEventId.ConnectionClosed[20003] (Microsoft.EntityFrameworkCore.Database.Connection)
Closed connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb' (0ms).
dbug: 19.07.2026 21:14:19.679 CoreEventId.ContextDisposed[10407] (Microsoft.EntityFrameworkCore.Infrastructure)
'BloggingContext' disposed.
dbug: 19.07.2026 21:14:19.679 RelationalEventId.ConnectionDisposing[20007] (Microsoft.EntityFrameworkCore.Database.Connection)
Disposing connection to database 'OpenJsonBug' on server '(localdb)\mssqllocaldb'.
dbug: 19.07.2026 21:14:19.679 RelationalEventId.ConnectionDisposed[20008] (Microsoft.EntityFrameworkCore.Database.Connection)
Disposed connection to database '' on server '' (0ms).
```

### EF Core version

10.0.10

### Database provider

Microsoft.EntityFrameworkCore.SqlServer

### Target framework

.NET 10.0

### Operating system

Windows 11

### IDE

Visual Studio 2026 (18.8.0)

Contributor guide

Open the contributing guide

Research direction

Start by tracing SQL Server collection translation from UseParameterizedCollectionMode(Parameter), comparing the list and IReadOnlySet repro with OPENJSON output. Add a regression test for the IReadOnlySet query and verify that its generated SQL uses one parameter, matching the list filter behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, sql
Domain
backend, database
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
62/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.