我有一个如下指定的计算列:
(case when [StartDate]<=getdate() AND [EndDate] IS NULL then (1) else (0) end)
我正在尝试在Entity Framework中使用此列的值。有没有可能将此识别为boolean
?那,或者我可以根据它的返回值将它定义为我的数据库中的一点吗?实际上,实体框架认为它是int
(因为它似乎在不清楚的时候就会这样做。)
答案 0 :(得分:1)
只需将值转换为int,如下所示:
CAST ((case when [StartDate]<=getdate() AND [EndDate] IS NULL
then (1) else (0) end) AS BIT)
EF会自动将此列识别为布尔值。
实际上,原始查询返回一个整数,这就是EF将其重新整理为整数的原因。在SQL Server中,除非您说相反,否则1和0是整数值。如果希望SQL Server将它们重新组合为布尔(位)类型,则必须使用CAST (0 as BIT)
或CAST (1 as BIT)
。
答案 1 :(得分:0)
试试这个:
删除表##试验;