1

我試圖用實體框架執行故事查詢。實體框架。 ExecuteStoreQuery錯誤將數據類型varchar轉換爲實數

我一直在嘗試這個年齡。我傳入的數據類型以雙精度開始。然後我發現在SQL中是真實的,所以我轉換爲單一。

(半徑是一個整數)

但我得到這個錯誤。

將數據類型varchar轉換爲實際時出錯。

var query = context.ExecuteStoreQuery<SearchIndex>("select * FROM dbo.ItemsWidthinRadiusMilesSearchIndex('{0}','{1}','{2}')", Convert.ToSingle(geo.Latitude), Convert.ToSingle(geo.Longitude), radius).ToList(); 

任何人都可以幫忙嗎?

編輯,問題仍然使用此語法發生:

SqlParameter lat = new SqlParameter() { ParameterName = "p1", Value =  Convert.ToSingle(geo.Latitude) }; 
SqlParameter lng = new SqlParameter() { ParameterName = "p2", Value = Convert.ToSingle(geo.Longitude) }; 
SqlParameter radiusParam = new SqlParameter() { ParameterName = "p3", Value = radius, DbType = System.Data.DbType.Int32 }; 
var paramsToPass = new object[] {lat,lng,radiusParam}; 
var query = context.ExecuteStoreQuery<SearchIndex>("select * FROM dbo.ItemsWidthinRadiusMilesSearchIndex('@p1','@p2','@p3')",paramsToPass).ToList(); 
+0

重寫你有五行代碼。三個做轉換,一個建立SQL字符串和一個執行它。之後,我敢打賭你可以自己解決問題。 – 2012-08-19 01:18:52

+0

很酷,我之前就是這麼做的,只是改用了這種方法來嘗試在這裏發佈。將編輯。 – 2012-08-19 01:58:36

+0

我應該設置更多的SqlParamater選項/參數嗎? – 2012-08-19 02:02:24

回答

1

取下參數報價。例如@ p1而不是'@ p1' - aKzenT

相關問題