实体框架强制CASE-WHEN列不可为空

时间:2017-12-29 22:52:11

标签: c# sql sql-server entity-framework

我在存储过程中有这个自定义列。正如您所看到的,它的价值永远不会为空:

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: enter image description here

哪个好,但我必须做以下事情,这很难看:

var isSuperAdmin = (!user.isSuperAdmin.HasValue) ? false: user.isSuperAdmin.Value;

有没有办法强迫它成为Boolean值?

1 个答案:

答案 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。