![](/img/trans.png)
[英]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.