Sql server EF Core 3.1生成错误的查询翻译

Sql server EF Core 3.1生成错误的查询翻译,sql-server,asp.net-core-3.1,ef-core-3.1,Sql Server,Asp.net Core 3.1,Ef Core 3.1,我有以下EF Core 3.1声明: var orders = await _dbContext.Orders.Include(o => o.OrderReceivers) .Where(o => o.BooleanFlag1 && o.OrderState == OrderState.SomeState && o.OrderReceivers.Any(o => o.

我有以下EF Core 3.1声明:

  var orders = await _dbContext.Orders.Include(o => o.OrderReceivers)
                                      .Where(o => o.BooleanFlag1 && o.OrderState == OrderState.SomeState && o.OrderReceivers.Any(o => o.BooleanFlag2))
                                      .ToListAsync(cancellationToken);
这是生成的SQL Server查询:

SELECT /*All column names here*/
FROM [Schema].[Orders] AS [o]
LEFT JOIN [Schema].[OrderReceivers] AS [o0] ON [o].[Id] = [o0].[OrderId]
WHERE (([o].[ShouldSendBlackList] = CAST(1 AS bit)) AND ([o].[OrderState] = 2)) AND EXISTS (
SELECT 1
    FROM [Schema].[OrderReceivers] AS [o1]
    WHERE ([o].[Id] = [o1].[OrderId]) AND ([o1].[BooleanFlag2] = '1'))
ORDER BY [o].[Id], [o0].[Id]
生成的SQL查询存在以下问题:

([o1].[BooleanFlag2]='1')

因为这会导致第二个where子句始终为false!
你知道这里出了什么问题吗?提前感谢。

看起来像是
BooleanFlag2
通过True映射到提供者字符串类型。这就解决了问题。