我有一个访问Azure SQL数据库的Azure函数。数据库中的第42列属于Geography数据类型(这就是问题所在)。
这是我正在运行的代码:
// var datatable = DataTable();
// Filled 'datatable' from a database query
string json = Newtonsoft.Json.JsonConvert.SerializeObject(dataTable, Newtonsoft.Json.Formatting.Indented);
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(json, Encoding.UTF8, "application/json")
};
我收到此错误消息:
执行函数时发生异常:Functions.GetRepeaterDetails。 Microsoft.Azure.WebJobs.Script:发生一个或多个错误。 System.Data:DataReader.GetFieldType(42)返回null。
我已经花了几个小时进行搜索,并尝试其他人声称可以解决的问题,但没有一个能解决我的问题。
我在another forum上阅读了这篇文章:
请注意,您的示例可以使用,但是无法使用网络 从SQL Azure检索几何的应用程序,因为SQL Azure 当前以兼容级别运行Denali(SQL Server 2012) 100;因此它将返回10.0空间类型和 尝试将其强制转换为11.0时,网络角色将引发异常。
我尝试过的一些事情:
即使我可以看到服务器正在通过Nuget安装适当的引用,但错误消息仍然相同。
答案 0 :(得分:2)
我不知道确切地加载哪个程序集来完成该工作,但是您可以通过使用查询中的.ToString()函数将该列转换为WKT来避免该问题。
由于您要格式化JSON格式的结果,因此无论如何都可能是您想要的。
例如
select ...., geo_location.ToString() geo_location, . . .
from some_table