как использовать Microsoft.SqlServer.Types в приложении-службе WCF - PullRequest
0 голосов
/ 02 января 2019

Я работаю над приложением службы WCF.Я хочу найти ближайшее место для кого-то.Моя проблема заключается в том, что когда я хочу вызвать любые методы, связанные с System.Data.Entity.Spatial.DbGeography, я получаю эту ошибку «Пространственные типы и функции недоступны для этого провайдера, поскольку сборка« Microsoft.SqlServer.Types »версии 10 или выше можетне найден. "

я установил Microsoft.SqlServer.Types с помощью NuGet в решении Visual Studio 2017 и вызвал загрузки сборок SqlServerTypes перед любым вызовом класса DbGeography

    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 () перед любой попыткой запроса местоположений, но я все еще получаю эту ошибку «Пространственные типы и функции недоступны для этого провайдера, поскольку не удалось найти сборку« Microsoft.SqlServer.Types »версии 10 или выше.»

в чем моя ошибка?

1 Ответ

0 голосов
/ 02 января 2019

я нашел свою ошибку и хочу поделиться, может быть полезным для других

в приведенном выше коде я изменил "Версия = 14.0.1016.290" на "Версия = 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>

и все отлично работает

...