2017-01-04 36 views
0

私はSOの質問に多く従いましたが、私はsimillarエラーが発生していますが、この問題を解決できません。DapperでSqlGeographyを読むことができません

私の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は、 'C:\ WINDOWS \ assembly \ GAC_MSIL \ Microsoft.SqlServer.Types \ 10.0'のコンテキストで 'Default'というコンテキストで 'Microsoft.SqlServer.Types、Version = 10.0.0.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91' .0.0__89845dcd8080cc91 \ Microsoft.SqlServer.Types.dll '。タイプBは、 'C:\ WINDOWS \ assembly \ GAC_MSIL \ Microsoft.SqlServer.Types \ 11.0'のコンテキスト 'Default'のコンテキストで 'Microsoft.SqlServer.Types、Version = 11.0.0.0、Culture = neutral、PublicKeyToken = 89845dcd8080cc91' .0.0__89845dcd8080cc91 \ Microsoft.SqlServer.Types.dll '。

私はちょうど動的オブジェクトへの読み込みはすべて正常ですが、私がSqlGeographyを持っている自分の型に読み込むと、私はこのエラーに遭遇します。

私はすべてのことをお勧めしたと思っていましたが、何かを見逃したようです。

+0

の可能性のある重複[RuntimeBinderInternalCompilerException DapperのとMicrosoft.SqlServer.Typesを使用](https://stackoverflow.com/questions/25600043/runtimebinderinternalcompilerexception-when-using-microsoft-sqlserver-types-with) –

+0

私自身の答えの可能な複製! – Rob

答えて

0

トピックについては、this articleを読んでみてください。SQL CLRデータ型(ジオメトリ、ジオグラフィ、およびhierarchyid)

また、あなたたconnectionStringでこれを追加してみてください:

"型システムバージョン= SQL Server 2012の"、

0

@Marc Gravellはそのことについて良い仕事をしたアセンブリのバージョン11.0をロードするためのSqlClientを強制します下の参照を参照してください、それはあなたの命を救うでしょう。 ASP.NETアプリケーションの場合

SqlGeography

Issue

、Global.asax.csにApplication_Startメソッドのコードの次の行を追加しますデスクトップアプリケーションの場合

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

を追加空間操作が実行される前に実行するコード行を次に示します。

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

.LoadNativeAssembliesメソッドは、CPUアーキテクチャに基づいて正しいアセンブリを取得します。

binフォルダにはこれが必要です。

enter image description here

関連する問題