2015-10-20 128 views
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 
+0

什麼「一些查詢」?問題可以在那裏嗎?看來,第一個「if」是正確的。 –

+0

某些查詢是一個查詢,它返回的結果與它的大小相同,所以我認爲它不會顯示它。某些查詢中的所有字段都具有相同的數據類型,當然,這些查詢對EF來說根本不可見,因爲EF需要if來知道如何構造COMPLEX TYPE。 –

+0

我們更改了0 AS的TotalToTake(0 AS十進制(18,2))AS TotalToTake,我們現在正面臨EF的相同問題。它報告錯誤: System.InvalidOperationException:「spFADMGetDays_Result」上的''TotalToTake''屬性無法設置爲''System.Int32''值。您必須將此屬性設置爲類型''System.Decimal''的非空值。 但是,當我檢查屬性它是十進制類型,因此雙方EF和SQL是十進制。當雙方都是小數時,爲什麼要將它設置爲System.Int32? –

回答

0

這不是一個確切的答案,而是一個解決方法。

我們發現的工作是複製整個某些查詢並使用永不會獲取任何數據的WHERE。

這可能是因爲EF需要真正的SQL表格字段才能正確映射。我可能錯了,所以糾正我,如果是這種情況

相關問題