如何在 WCF 服务应用程序中使用 Microsoft.SqlServer.Types

how use Microsoft.SqlServer.Types in WCF Service Application

我正在开发 WCF 服务应用程序。我想找到离某人最近的位置。 我的问题是当我想调用与 System.Data.Entity.Spatial.DbGeography 相关的任何方法时我得到这个错误 "Spatial types and functions are not available for this provider because the assembly 'Microsoft.SqlServer.Types' version 10 or higher could not be found."

我在 Visual Studio 2017 解决方案中通过 NuGet 安装了 Microsoft.SqlServer.Types 并在调用 DbGeography class

之前调用加载 SqlServerTypes 程序集
    private bool _IsSqlServerTypesLoaded;
    private void CheckSqlServerTypes()
    {
        if (!_IsSqlServerTypesLoaded)
        {
           System.Data.Entity.SqlServer.SqlProviderServices.SqlServerTypesAssemblyName = "Microsoft.SqlServer.Types, Version=14.0.1016.290, Culture=neutral, PublicKeyToken=89845dcd8080cc91";
            SqlServerTypes.Utilities.LoadNativeAssemblies(System.IO.Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "bin"));
            _IsSqlServerTypesLoaded = true;
        }
    }

我在尝试查询位置之前调用 CheckSqlServerTypes() 但我仍然收到此错误 "Spatial types and functions are not available for this provider because the assembly 'Microsoft.SqlServer.Types' version 10 or higher could not be found. "

我的错误是什么?

我发现了我的错误并想分享,也许对其他人有用

在上面的代码中,我将 "Version=14.0.1016.290" 更改为 "Version=14.0.0.0"

也将此添加到 web.config

<assemblyBinding>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>

一切正常