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

相关问题