gpt4 book ai didi

c# - Linq to SQL 奇怪的 SQL 翻译

转载 作者:行者123 更新时间:2023-11-30 16:31:12 25 4
gpt4 key购买 nike

我有一个简单的查询,它生成了一些奇怪的 SQL 翻译,当对象饱和时,它会炸毁我的代码。

from x in DataContext.MyEntities
select new
{
IsTypeCDA = x.EntityType == "CDA"
}

我希望这个查询应该转化为:

SELECT (CASE WHEN [t0].[EntityType] = @p1 THEN 1 ELSE 0 END) as [IsTypeCDA]
...

相反,我得到了这个:

SELECT 
(CASE
WHEN @p1 = [t0].[EntityType] THEN 1
WHEN NOT (@p1 = [t0].[EntityType]) THEN 0
ELSE NULL
END) AS [IsTypeCDA]
...

因为我正在使一个 POCO 饱和,其中 IsTypeCDA 是一个 bool,它爆炸了,说我不能将 null 分配给 bool

有什么想法吗?

编辑:修复了属性名称,使它们有意义...

最佳答案

from x in DataContext.MyEntities
select new
{
IsTypeCDA = x.EntityType == null
}

c# 解释(false)还是 sql 解释(null)?

这在sql中运行所以sql解释。这就是时髦翻译的原因 - 该操作确实返回可为 null 的 bool 值。

使用此查询将可为 null 的 bool 值转换为普通的旧 bool 值。

from x in DataContext.MyEntities
select new
{
IsTypeCDA = ((bool?)(x.EntityType == "CDA")) ?? false
}

关于c# - Linq to SQL 奇怪的 SQL 翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5042693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com