1
我得到以下SP並在運行應用程序時出現錯誤:爲什麼無法將屬性設置爲'System.Int32'值並且必須是類型爲'System.Boolean'的非空值'
「spFADMGetHours_Result」上的'HaveReaction'屬性不能爲 設置爲'System.Int32'值。您必須將此屬性設置爲類型「System.Boolean」
井的 非空值時,HaveReaction
是一點,當我添加存儲過程的背景下,並期待在屬性它是鍵入布爾值,以便識別它。我試圖從上下文中刪除有關此SP的所有內容,並重新插入它,但沒有運氣。我不明白爲什麼我得到這個錯誤,因爲該字段被聲明爲位,並且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
什麼「一些查詢」?問題可以在那裏嗎?看來,第一個「if」是正確的。 –
某些查詢是一個查詢,它返回的結果與它的大小相同,所以我認爲它不會顯示它。某些查詢中的所有字段都具有相同的數據類型,當然,這些查詢對EF來說根本不可見,因爲EF需要if來知道如何構造COMPLEX TYPE。 –
我們更改了0 AS的TotalToTake(0 AS十進制(18,2))AS TotalToTake,我們現在正面臨EF的相同問題。它報告錯誤: System.InvalidOperationException:「spFADMGetDays_Result」上的''TotalToTake''屬性無法設置爲''System.Int32''值。您必須將此屬性設置爲類型''System.Decimal''的非空值。 但是,當我檢查屬性它是十進制類型,因此雙方EF和SQL是十進制。當雙方都是小數時,爲什麼要將它設置爲System.Int32? –