我使用EF5從.NET應用程序中調用存儲過程與CHAR參數導致參數與巨大的價值
從EF
return base.ExecuteFunction<sp_select_contracts_Result>("sp_select_contracts", x, y, z);
在呼叫調用存儲過程[MS SQL]該參數定義爲@para1 CHAR(2)
等
但在SQL事件探查器PROC我抓到EF發送以下
exec [dbo].[sp_select_contracts_statistics] @x='15 '@y='24 ',@z='2010 '
正是這樣 - 實際值後的大量空間。
當我改變CHAR到VARCHAR它正常工作:
exec [dbo].[sp_select_contracts_statistics] @x='15','@y='24,@z='2010
「
我可以解決這一點很容易,但我想知道我失蹤 這裏。
更新: 忘了提及在C#中所有的值都是字符串。 在從C#之前通過EF去最後一次通話的值是否正確: x = "15" {String}
等。
EDIT2: 更改煤焦到VARCHAR處理工作按預期。仍然會更喜歡知道這是一個錯誤還是我們錯過的東西。
而你的參數是如何定義在你的應用程序?很顯然,這是應用程序通過所有空間... – sepupic
啊我忘了那部分:/ 他們都是字符串,在通過EF之前的最後一次調用,值是正確的。 – AngelicCore
我不知道C#,但是那些字符串在這些定義中有沒有SIZE?例如,當你定義一個char數據類型時,你也應該精確的確定它的大小:例如char(50)。如果你不這樣做,默認大小是1.是否可以在C#中有一個默認大小,如8000,如果你沒有明確定義它,它使用默認大小? – sepupic