定义计算列的数据类型

时间:2014-08-25 19:32:42

标签: sql-server entity-framework

我有一个如下指定的计算列:

(case when [StartDate]<=getdate() AND [EndDate] IS NULL then (1) else (0) end)

我正在尝试在Entity Framework中使用此列的值。有没有可能将此识别为boolean?那,或者我可以根据它的返回值将它定义为我的数据库中的一点吗?实际上,实体框架认为它是int(因为它似乎在不清楚的时候就会这样做。)

2 个答案:

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

试试这个:

删除表##试验;
创建表##测试(
[ID] [BIGINT]
,[计算]铸造([ID]如[浮子])* 0.99
);
插入##测试
([ID])
值(9999999999);
选择*
从##试验;