我得到了以下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
答案 0 :(得分:0)
这不是一个确切的答案,而是一个可行的方法。
我们发现的工作是复制整个SOME QUERY并使用永远不会得到任何数据的WHERE。
这可能是因为EF需要真正的SQL表字段才能正确映射。我可能是错的,所以如果是这样的话,请纠正我