Lat&长地理半径查询

时间:2013-10-10 05:49:27

标签: asp.net-mvc entity-framework tsql c#-4.0 sqlgeography

我试图在用户lat&的X半径范围内找到商店。长。我已经阅读了很多关于这个主题的问题,答案和文章。我的结果不一定是精确定位的,但是如果您在地理列上使用过滤器可能会得到误报,则不能接受。

鉴于上述要求,我认为不需要使用Geography数据类型并添加空间索引。我也不需要一个完美的圆半径。换句话说,边界框是可以接受的。所以我决定来自Alastaira的这个solution,他就这个主题进行了非常丰富的会议here.

现在我的应用程序是使用CF EF4和SQL 2008R2的MVC。我原本打算在LINQ中进行操作,就像我可以进行任何其他数据库交互一样,但我真的很难过几步,例如:

DECLARE @point geography = geography::Point(40.7316, -73.9920, 4326);

我认为EF4不支持地理数据类型,因此肯定会使事情变得复杂。

然后我开始思考......鉴于db有点适合这种运算,我应该将TSQL包装在SP中,然后吐出一个记录集,然后我可以使用LINQ吗?

这是我的第一个空间数据库操作,因此欢迎任何想法或建议,并将不胜感激。

如果sp是一个可行的解决方案,建议最好的实施方式将是很好的。

1 个答案:

答案 0 :(得分:1)

  

我认为EF4不支持地理数据类型,因此肯定会使事情变得复杂。

Entity Framework 4.x本身并不支持地理位置。

  

如果sp是一个可行的解决方案,建议最好的实施方式将是很好的。

Using stored procedures to return stronly typed objects has already been asked。它应该直截了当地创建一个存储过程来处理地理数据类型,但不包括结果实体对象中的特定类型。