[英]EF Core, Postgres call a stored procedure with a string array parameter
[英]How to call stored procedure that has spatial parameter in EF core
我正在使用 EF Core 2.2.0 並且我試圖調用一個具有Geometry
類型參數的存儲過程。 當我調用存儲過程時,出現此錯誤:
指定類型未在目標服務器上注冊。 NetTopologySuite.Geometries.Polygon,NetTopologySuite,版本=1.15.2.0,文化=中性,PublicKeyToken=f580a05016ebada1。
我這樣調用存儲過程:
// Create IGeometry with NetTopologySuite.Features.Feature
IGeometry zone= feature.Geometry;
var zoneParameter = new SqlParameter
{
ParameterName = "@zone",
Value = zone,
SqlDbType = SqlDbType.Udt,
UdtTypeName = "Geometry"
};
return _context.Query<ReportDTO>()
.FromSql("mySP {0}", zoneParameter)
.ToList();
我的存儲過程就是這樣:
ALTER PROCEDURE mySP
@zone GEOMETRY
AS
BEGIN
-- do something
END
SQL Server 版本為:Microsoft SQL Azure (RTM) - 12.0.2000.8
這在 EF Core 上不支持還是我做錯了什么?
你應該轉換幾何
var geometryWriter = new SqlServerBytesWriter {IsGeography = false};
var geometryBytes = geometryWriter.Write(zone);
var zoneParameter = new SqlParameter
{
ParameterName = "@zone",
Value = geometryBytes,
SqlDbType = SqlDbType.Udt,
UdtTypeName = "Geometry"
};
return _context.Query<ReportDTO>()
.FromSql("mySP {0}", zoneParameter)
.ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.