WebApi2とEntityFramework6を使用してサービスを開発しています。 サービスが動作する必要がある従来のSQLServer DBがあります。'hierarchyid'パラメータでEntityFramework 6からストアドプロシージャを呼び出す方法
DBは 'hierarchyid'データ型を頻繁に使用しており、この型はDBのストアドプロシージャで内部的に使用されます。
EF6は 'hierarchyid'データ型をサポートしていないようですので、私はthis forkに 'hierarchyid'のサポートを追加しました。
DBからの検索が 'hierarchyid'型でうまくいっている間、私の問題は、 'hierarchyid'をパラメータとして必要とするストアドプロシージャにあります。
ストアドプロシージャは、次のようになります。このストアドプロシージャを呼び出すための
CREATE PROCEDURE [dbo].[GetSomethingByNodeId]
(
@startingRoot HIERARCHYID
,@return HIERARCHYID OUTPUT
)
私のクライアントコードは次のようになります。
var param1 = new SqlParameter("@startingRoot", new HierarchyId("/"));
var param2 = new SqlParameter{ ParameterName = "@return", Value = 0, Direction = ParameterDirection.Output };
var obj = context.Database.SqlQuery<HierarchyId>("GetSomethingByNodeId" @startingRoot, @return out", param1, param2).ToList();
しかし残念ながら、このクエリを呼び出すと言う例外がスローされます。
をAn unhandled exception of type 'System.ArgumentException' occurred in EntityFramework.SqlServer.dll
Additional information: No mapping exists from object type System.Data.Entity.Hierarchy.HierarchyId to a known managed provider native type.
どのように私はこの作品を作ることができますか?
ここでは暗闇の中で撮影しています... SprocをNvarchar以外のものに変更して、その値をSprocの内部でhirachyIdにキャストできますか? – SimonGates