Невозможно прочитать SqlGeography с Dapper

dapper sqlgeography

Вопрос

Я последовал за многими вопросами SO, и я получаю simillar ошибку, но я не могу исправить эту проблему.

Моя версия Dapper - 1.50.1. Моя версия Microsoft.SqlServer.Types - 11.0.2

Я добавил привязку переадресации в файле конфигурации следующим образом:

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

Ошибка, которую я получаю:

Ошибка разбора столбца 2 (Location = POINT (-122.349 47.651) - Объект)

Хотя внутреннее исключение:

[A] Microsoft.SqlServer.Types.SqlGeography нельзя передать в [B] Microsoft.SqlServer.Types.SqlGeography. Тип A исходит из «Microsoft.SqlServer.Types, Version = 10.0.0.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91» в контексте «По умолчанию» в месте «C: \ WINDOWS \ assembly \ GAC_MSIL \ Microsoft.SqlServer.Types \ 10.0 .0.0__89845dcd8080cc91 \ Microsoft.SqlServer.Types.dll. Тип B начинается с «Microsoft.SqlServer.Types, Version = 11.0.0.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91» в контексте «По умолчанию» в месте «C: \ WINDOWS \ assembly \ GAC_MSIL \ Microsoft.SqlServer.Types \ 11.0 .0.0__89845dcd8080cc91 \ Microsoft.SqlServer.Types.dll.

Если я просто читаю динамический объект, все в порядке, но если я прочитаю свой собственный тип, который имеет SqlGeography, я получаю эту ошибку.

Я думал, что сделал все как рекомендовано, но, похоже, я что-то пропустил.

Популярные ответы

@Marc Gravell хорошо поработал над тем, что см. Ниже, и это спасет вашу жизнь.

SqlGeography

вопрос

Для приложений ASP.NET добавьте следующую строку кода в метод Application_Start в Global.asax.cs:

SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));

Для настольных приложений добавьте следующую строку кода для запуска до выполнения любых пространственных операций:

SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

Метод .LoadNativeAssemblies получит правильную сборку для вашей базы на архитектуре процессора.

В папке bin у вас должно быть это.

введите описание изображения здесь



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow