昨天在项目中,用到 EntityFramework 通过SQL语句查询。

具体的SQL语句如下:

SELECT
t.*
FROM
(
SELECT
c.id AS CommunityId,
c.`name` AS CommunityName,
ASTEXT(c.spatial_data) AS CommunitySpatialData,
s.id AS StreetId,
s.`name` AS StreetName,
ASTEXT(s.spatial_data) AS StreetSpatialData,
MBRContains (s.spatial_data ,ST_GeometryFromText('Point(@Longitude @Latitude)')) AS streetIn,
MBRContains (c.spatial_data ,ST_GeometryFromText('Point(@Longitude @Latitude)')) AS communityIn
FROM
community c
LEFT JOIN street s ON c.street_id = s.id
) AS t
WHERE
t.streetIn = 1
AND t.communityIn = 1;

应该说这样没有问题的,但是查询一直报错:“Invalid GIS data provided to function st_geometryfromtext.”

换了多种传参方式,但是都还有问题。

经过各种调试、修改参数,大致可以确定是:两个参数是连续的,中间有空格,但是在参数替换后空格替换没了,导致数据格式出错。

再次调整下传的参数就可以,修改后SQL语句:

SELECT
t.*
FROM
(
SELECT
c.id AS CommunityId,
c.`name` AS CommunityName,
ASTEXT(c.spatial_data) AS CommunitySpatialData,
s.id AS StreetId,
s.`name` AS StreetName,
ASTEXT(s.spatial_data) AS StreetSpatialData,
MBRContains (s.spatial_data ,ST_GeometryFromText(@point)) AS streetIn,
MBRContains (c.spatial_data ,ST_GeometryFromText(@point)) AS communityIn
FROM
community c
LEFT JOIN street s ON c.street_id = s.id
) AS t
WHERE
t.streetIn = 1
AND t.communityIn = 1;

对应的 point 是:

string point = "Point(" + Longitude + " " + Latitude + ")";

虽然知道了问题,也解决了,但是没有彻底解决这个问题。

有知道的可以告知下。

注意:

1、对于面数据:最后一个点应该是第一个点,这样在入库的时候才正确,否则报错“Invalid GIS data provided to function st_geometryfromtext.”

EntityFramework 两个参数连续(中间有空格)问题的更多相关文章

  1. STM32F207 两路ADC连续转换及GPIO模拟I2C给MT9V024初始化参数

    1.为了更好的方便调试,串口必须要有的,主要打印一些信息,当前时钟.转换后的电压值和I2C读出的数据. 2.通过GPIO 模拟I2C对镁光的MT9V024进行参数初始化.之前用我以前公司SP0A19芯 ...

  2. ci连贯操作的limit两个参数和sql是相反的

    ci连贯操作的limit两个参数和sql是相反的 db->where("name =",'mary')->ge() name后面要有个空格否则报错当为一个字段 -> ...

  3. 木棍加工(dp,两个参数的导弹拦截问题)

    题目描述 一堆木头棍子共有n根,每根棍子的长度和宽度都是已知的.棍子可以被一台机器一个接一个地加工.机器处理一根棍子之前需要准备时间.准备时间是这样定义的:     第一根棍子的准备时间为1分钟:   ...

  4. wParam和lParam两个参数到底是什么意思?

    在Windows的消息函数中,有两个非常熟悉的参数:wParam,lParam. 这两个参数的字面意义对于现在的程序来说已经不重要了,因为它是16位系统的产物,为了保持程序的可移植性,就将它保存了下来 ...

  5. 25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有

    package zhongqiuzuoye; //自己写的方法 public class Rect { public double width; public double height; Rect( ...

  6. 文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别

    这两天在调优数据库性能的过程中需要降低操作系统文件Cache对数据库性能的影响,故调研了一些降低文件系统缓存大小的方法,其中一种是通过修改/proc/sys/vm/dirty_background_r ...

  7. (转)文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别

    这两天在调优数据库性能的过程中需要降低操作系统文件Cache对数据库性能的影响,故调研了一些降低文件系统缓存大小的方法,其中一种是通过修改/proc/sys/vm/dirty_background_r ...

  8. [转载]C#缓存absoluteExpiration、slidingExpiration两个参数的疑惑

    看了很多资料终于搞明白cache中absoluteExpiration,slidingExpiration这两个参数的含义. absoluteExpiration:用于设置绝对过期时间,它表示只要时间 ...

  9. 三个案例带你看懂LayoutInflater中inflate方法两个参数和三个参数的区别

    关于inflate参数问题,我想很多人多多少少都了解一点,网上也有很多关于这方面介绍的文章,但是枯燥的理论或者翻译让很多小伙伴看完之后还是一脸懵逼,so,我今天想通过三个案例来让小伙伴彻底的搞清楚这个 ...

随机推荐

  1. 切实解决socket连接掉线检测

    原文:切实解决socket连接掉线检测 版权声明:欢迎转载,但是请保留出处说明 https://blog.csdn.net/lanwilliam/article/details/51698807 新公 ...

  2. 查找searching

    查找searching 在有序数列中查找某一个数据时候的算法设计 查找表的分类 静态查找表:只进行查找操作 动态查找表:不断的插入不存在,删除已存在 查找表的操作 查找.插入.删除 查找也叫检索,是根 ...

  3. 解决jQuery版本冲突

    解决jquery版本冲突问题 <!-- 引入1.6.4版的jq --><script src="http://ajax.googleapis.com/ajax/libs/j ...

  4. Appium移动自动化测试-----(九) appium API 之应用操作

    1.安装应用 方法: installApp() 安装应用到设备中去.需要apk包的路径. driver.installApp("path/to/my.apk"); driver.i ...

  5. QT中PRO文件解析(转)

    From csdn blog: QT中PRO文件写法的详细介绍,很有用,很重要! 在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: ...

  6. hadoop 集群调优实践总结

    调优概述# 几乎在很多场景,MapRdeuce或者说分布式架构,都会在IO受限,硬盘或者网络读取数据遇到瓶颈.处理数据瓶颈CPU受限.大量的硬盘读写数据是海量数据分析常见情况. IO受限例子: 索引 ...

  7. Aes 加密解密 java加密解密

    使用AES加密解密代码详解 首先,如果是使用nodejs + vue 写的前端, 那么你需要npm 加载一个js文件 npm i crypto-js --save --save-exact npm i ...

  8. 在做爬虫或者自动化测试时新打开一个新标签页,必须使用windows切换

    在做爬虫或者自动化测试时,有时会打开一个新的标签页或者新的窗口,直接使用xpath定位元素会发现找不到元素,在firefox中定位了元素还是找不到, 经过多次发现,在眼睛视野内看到这个窗口是在最前面, ...

  9. python之numpy和pandas

    一.numpy矩阵的拼接合并 列拼接:np.column_stack() >>> import numpy as np >>> a = np.arange(9).r ...

  10. vue 下拉刷新数据的插件的使用:

    1.安装: npm i vue-scroller -S npm install vue-scroller -D 2.在需要加载的页面中引入,或在公共js文件中引入: import VueScrolle ...