1

我正在尝试在用户 lat & long 的 X 半径范围内找到商店。我已经阅读了很多关于该主题的问题、答案和文章。我的结果不必非常准确,但如果使用 Geography 列上的过滤器可能会出现误报,这是不可接受的。

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

现在我的应用程序是使用 CF EF4 和 SQL 2008R2 的 MVC。我最初想在 LINQ 中进行操作,就像我在任何其他数据库交互中一样,但老实说,我被以下几个步骤难住了:

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

我不认为 EF4 支持 geography 数据类型,所以这肯定会使事情复杂化。

然后我开始思考......鉴于数据库有点适合这种处理,我是否应该将 TSQL 包装在一个 SP 中,该 SP 会吐出一个记录集,然后我可以在其上使用 LINQ?

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

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

4

1 回答 1

1

我不认为 EF4 支持 geography 数据类型,所以这肯定会使事情复杂化。

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

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

已经要求使用存储过程返回强类型对象。创建存储过程来处理地理数据类型但不包括结果实体对象中的特定类型应该足够简单。

于 2013-10-10T05:57:09.050 回答