我正在使用WebApi2和EntityFramework6开发服务.我有一个我的服务必须使用的遗留SQLServer数据库.
该DB大量使用'hierarchyid'数据类型,此类型在DB的存储过程内部使用.
好像EF6不支持'hierarchyid'数据类型,所以我使用这个fork来增加对'hierarchyid'的支持.
虽然从DB中检索到的是'hierarchyid'类型,但我的问题在于存储过程需要'hierarchyid'作为参数.
存储过程如下所示:
CREATE PROCEDURE [dbo].[GetSomethingByNodeId]
(
@startingRoot HIERARCHYID
,@return HIERARCHYID OUTPUT
)
Run Code Online (Sandbox Code Playgroud)
我调用此存储过程的客户端代码如下所示:
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();
Run Code Online (Sandbox Code Playgroud)
但不幸的是,调用此查询会抛出一个异常,说:
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.
Run Code Online (Sandbox Code Playgroud)
关于我如何使这项工作的任何想法?
sql-server stored-procedures entity-framework hierarchyid entity-framework-6