我有一个包含三列的表。客户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
子句中。为什么会产生此语句?