EF.Parameter or setting ParameterTranslationMode.Parameter doesn't work with IReadOnlySet
Author: IT-CASADOCreated Jul 19, 2026Updated Sep 27, 2026
Labelscustomer-reportedarea-query
Bug description
Unfortunately IReadOnlySet is not translated into a single parameter with using OPENJSON.
The generated SQL for the list filter:
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:
SELECT [b].[BlogId]
FROM [Blogs] AS [b]
WHERE [b].[BlogId] IN (@filterAsSet1, @filterAsSet2)Your code
using Microsoft.EntityFrameworkCore;
using var dbContext = new BloggingContext();
dbContext.Database.EnsureDeleted();
dbContext.Database.EnsureCreated();
List<int> filterAsList = [1, 2];
IReadOnlySet<int> filterAsSet = filterAsList.ToHashSet();
var queryWithListFilter = await dbContext
.Set<Blog>()
.Where(b => filterAsList.Contains(b.BlogId))
.ToListAsync();
var queryWithSetFilter = await dbContext
.Set<Blog>()
.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<Blog> Blogs { get; set; }
}
public class Blog
{
public int BlogId { get; set; }
}Stack traces
Verbose output
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<Blog>()
.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<Blog>(
relationalQueryContext: (RelationalQueryContext)queryContext,
relationalCommandResolver: parameters => [LIFTABLE Constant: RelationalCommandCache.QueryExpression(
Projection Mapping:
EmptyProjectionMember -> Dictionary<IPropertyBase, int> { [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<IPropertyBase, int> { [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 ConsSource: dotnet/efcore