我有一个场景,我需要计算地址之间的距离。我在DbGeography
命名空间中看到了很多使用System.Data.Entity
的示例,但是由于我的应用程序无法加载SqlServerSpatial110.dll
库,因此我似乎不顾一切。
我已经阅读了几篇关于这个特定问题的文章和SO,但是它们似乎都不适合我,因此这个SO的原因,希望找到我的具体情况的其他角度。
环境
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
命名空间来修复此问题。这有点不同,我很确定这不是在数据库中驱动,而是在我的应用程序中。我宁愿在数据库中完成这项工作,因为我得到的条目越多,性能就会大大降低。