我正在使用WebApi2和EntityFramework6開發服務。 我有一個傳統的SQLServer數據庫,我的服務必須使用。如何使用'hierarchyid'參數從EntityFramework 6調用存儲過程
該數據庫嚴重使用'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.
關於我如何使這項工作的任何想法?
在這裏黑暗中射擊......你能改變除了Nvarchar之外的Sproc,然後在Sproc的內部將這個值轉換成hirachyId嗎? – SimonGates