为什么无法将属性设置为'System.Int32'值,并且必须是'System.Boolean'类型的非空值

时间:2015-10-20 14:22:29

标签: entity-framework

我得到了以下SP,在运行应用程序时出现错误:

  

'spFADMGetHours_Result'上的'HaveReaction'属性不可能   设置为'System.Int32'值。您必须将此属性设置为a   'System.Boolean'

类型的非null值

嗯,HaveReaction有点,当我将存储过程添加到上下文并查看属性时,它的类型为Boolean,因此它很好地识别它。我试图从上下文中删除有关此SP的所有内容,并重新插入它没有运气。我不明白为什么我收到这个错误,因为该字段被声明为bit而EF将其导入为布尔值,这是错误的,在哪里以及为什么?

ALTER PROCEDURE [dbo].[spFADMGetHours]
@Patients varchar(max),
@DateToProcess varchar(10)

AS BEGIN DECLARE @sql varchar(max)

-- The IF is for entity framework integration
if @Patients is null and @DateToProcess is null
begin
    SELECT CAST(NULL AS datetime) AS SOMEDATE, CAST(NULL AS time) as SOMEHOUR, 0 AS TotalToTake, 0 AS TotalTakenOrIncident, CAST(0 AS bit) AS HaveReaction
end
else
    begin
        SET @sql = 'SOME QUERY'
        exec(@sql)
    end
END

1 个答案:

答案 0 :(得分:0)

这不是一个确切的答案,而是一个可行的方法。

我们发现的工作是复制整个SOME QUERY并使用永远不会得到任何数据的WHERE。

这可能是因为EF需要真正的SQL表字段才能正确映射。我可能是错的,所以如果是这样的话,请纠正我