实体框架。 ExecuteStoreQuery将数据类型varchar转换为real的错误

时间:2012-08-19 01:06:37

标签: c# sql-server sql-server-2008 entity-framework sqlparameters

我正在尝试使用Entity Framework执行故事查询。

我已经尝试了很多年了。我传入的数据类型以double开头。然后我发现SQL中的真实单一,所以我转换为单。

(radius是一个int)

但是我收到了这个错误。

将数据类型varchar转换为real。时出错。

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();

1 个答案:

答案 0 :(得分:1)

从参数中删除引用。例如@ p1而不是'@ p1' - aKzenT