我在存储过程中有这个自定义列。如您所见,它的值不可能为空:

cast(case when ( s.userName is not null and s.Username in ( 'super','superadmin') then 1
    else 0 end
    as bit)  as isSuperAdmin

但当我将其映射到实体框架时,它将变成可为空的:
c# -  Entity Framework 强制CASE-WHEN列不可为空-LMLPHP
这没关系,但我必须做以下事情,而且很难看:
var isSuperAdmin = (!user.isSuperAdmin.HasValue) ? false: user.isSuperAdmin.Value;

有没有办法强迫它是一个Boolean值?

最佳答案

除非包装在ISNULL
这应该管用

ISNULL(CASE WHEN s.Username in ( 'super','superadmin') THEN CAST(1 AS BIT) END,0) as isSuperAdmin

不需要进行s.userName is not null检查。如果它与IN匹配,它将不为空。

10-08 14:28