Dapper SqlHierachyId列を読み込む(SQL Server 2008 R2)

.net c# dapper sql-server

質問

SQL Serverのhierarchyid型(別名SqlHierachyId )の列を含むSQL Server 2008 R2データベースから読み込もうとしています。

このクラスをDapperで使いたいと思います:

public class Foo 
{ 
    public int Id { get; set; }
    public SqlHierarchyId Path { get; set; }
} 

たとえば、 connection.Query<Foo>("select 3 as [Id], hierarchyid::Parse('/1/2/3/') as [Path]");

(テストのために、SqlHierarchyIdを使用できるようにするには、 Program Files (x86)\Microsoft SQL Server\110\Shared\Microsoft.SqlServer.Types.dllを参照する必要がありProgram Files (x86)\Microsoft SQL Server\110\Shared\Microsoft.SqlServer.Types.dll

これを実行すると、DataException例外が発生します。 Error parsing column x (Path=/1/2/3/ - Object)発生しましたError parsing column x (Path=/1/2/3/ - Object) 1/2/3 Error parsing column x (Path=/1/2/3/ - Object)

私はITypeMapを追加し、すべてのインターフェイスメソッドにブレークポイントを設定して、渡される値を確認しようとしましたが、呼び出されることはありません。

どのようにDapperにカスタムマッパーを指定させることができるかについての提案はありますか? (あるいは、すべてのSql型をサポートする拡張機能があれば、それも良いでしょう)

受け入れられた回答

Dapper 1.34は、コアライブラリのSqlHierarchyIdをサポートしています。今はちょうどうまくいくはずです。


人気のある回答

DapperはSqlHierarchyIdをサポートしていますが、最新のMicrosoft.SqlServer.Types Nugetパッケージを使用している場合でも例外は発生します。動作させるには、これをweb.configまたはapp.configに追加します。

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
       <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
       <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ