C# EF Core 2.2查询为可为null的列生成WHERE为null

C# EF Core 2.2查询为可为null的列生成WHERE为null,c#,.net,.net-core,entity-framework-core,C#,.net,.net Core,Entity Framework Core,我有一张三列的桌子。客户端Id可为空 public class ProductType { public int Id { get; set; } public string Name { get; set; } public long? ClientId { get; set; } } 当我运行以下代码时: public async Task GetClientType(string productTypeName, long clientId)

我有一张三列的桌子。客户端Id可为空

public class ProductType
{
    public int Id { get; set; }

    public string Name { get; set; }

    public long? ClientId { get; set; }
}
当我运行以下代码时:

public async Task GetClientType(string productTypeName, long clientId)
        {
            var clientResult = await (from productType in context.ProductType
                                      where productType.Name == productTypeName
                                            && productType.ClientId == clientId
                                      select productType).FirstOrDefaultAsync();


            .......
        }
虽然数据库包含此查询的结果,但我没有得到任何结果。 然后,我检查了EF Core生成的查询,发现生成了以下内容:

SELECT TOP(1) [productType].[Id], [productType].[Name], [productType].[ClientId]
FROM [ProductType] AS [productType]
WHERE [productType].[ClientId] IS NULL AND (([productType].[Name] = 'test client') AND ([productType].[ClientId] = 1))

我可以看出问题在于
Where
子句。为什么要生成此语句?

@LasseVågsætherKarlsen您指的查询中的值?@LasseVågsætherKarlsen因为它不会返回任何结果,因为它应该作为指定参数的数据存在。现在,请参见SQL中引用了两次
ClientId
。在LINQ查询中,
=clientId
,我假设
clientId
这里有一个变量。你能告诉我这个变量是哪种类型的,当前值是多少吗?@LasseVågsætherKarlsen你是说由EF CoreYes生成的SQL,就是你在问题中发布的那个。