我在存储过程中有这个自定义列。正如您所看到的,它的价值永远不会为空:
cast(case when ( s.userName is not null and s.Username in ( 'super','superadmin') then 1
else 0 end
as bit) as isSuperAdmin
但是当我将它映射到Entity Framework时,它变成了Nullable:
哪个好,但我必须做以下事情,这很难看:
var isSuperAdmin = (!user.isSuperAdmin.HasValue) ? false: user.isSuperAdmin.Value;
有没有办法强迫它成为Boolean
值?
答案 0 :(得分:4)
SQL Server将大多数计算表达式的值视为可为空,除非包含在ISNULL
这应该有效
ISNULL(CASE WHEN s.Username in ( 'super','superadmin') THEN CAST(1 AS BIT) END,0) as isSuperAdmin
无需s.userName is not null
检查。如果它与IN
匹配则不会为NULL。