将DbGeography用于地理位置

时间:2017-05-30 13:17:09

标签: c# asp.net-mvc geospatial

我有一个场景,我需要计算地址之间的距离。我在DbGeography命名空间中看到了很多使用System.Data.Entity的示例,但是由于我的应用程序无法加载SqlServerSpatial110.dll库,因此我似乎不顾一切。

我已经阅读了几篇关于这个特定问题的文章和SO,但是它们似乎都不适合我,因此这个SO的原因,希望找到我的具体情况的其他角度。

环境

  • 我添加了NuGet的Microsoft.SqlServer.Types库。
  • 我添加了SqlServerSpatial110.dll´ file from my folder: Windows / System32`

我正试图像这样计算距离:

var loc1 = DbGeography.FromText(string.Format(CultureInfo.InvariantCulture.NumberFormat, "POINT({0} {1})", someLatitude, someLongitude));
var loc2 = DbGeography.FromText(string.Format(CultureInfo.InvariantCulture.NumberFormat, "POINT({0} {1})", someLatitude, someLongitude));

var distance = loc1.Distance(loc2);

问题
每当我尝试运行我的应用程序并运行此代码时,我都会遇到异常:

  

无法加载DLL SqlServerSpatial.dll:找不到指定的模块。

我看到这个错误发生在其他人身上,但我还没有找到可能的解决方案。

我认为抛出异常是因为它无法加载库(正如它所说的那样),但我无法确定为什么它无法加载库。如上所述,我从SqlServerSpatial110.dll文件夹中取了Windows/System32,因为很多人建议这是找到正确的DLL。

任何建议或可能的修正都很有必要。

到目前为止,我已经能够使用System.Device命名空间来修复此问题。这有点不同,我很确定这不是在数据库中驱动,而是在我的应用程序中。我宁愿在数据库中完成这项工作,因为我得到的条目越多,性能就会大大降低。

0 个答案:

没有答案
相关问题