C# 如何调用EF核中具有空间参数的存储过程
我使用的是EF Core 2.2.0,我试图调用一个存储过程,该存储过程的参数类型为C# 如何调用EF核中具有空间参数的存储过程,c#,sql-server,.net-core,entity-framework-core-2.2,C#,Sql Server,.net Core,Entity Framework Core 2.2,我使用的是EF Core 2.2.0,我试图调用一个存储过程,该存储过程的参数类型为Geometry。调用存储过程时,出现以下错误: 指定的类型未在目标服务器上注册。NetTopologySuite.Geometries.Polygon,NetTopologySuite,版本=1.15.2.0,区域性=neutral,PublicKeyToken=f580a05016ebada1 我这样调用存储过程: // Create IGeometry with NetTopologySuite.Featu
Geometry
。调用存储过程时,出现以下错误:
指定的类型未在目标服务器上注册。NetTopologySuite.Geometries.Polygon,NetTopologySuite,版本=1.15.2.0,区域性=neutral,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();
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();
var geometryWriter=newsqlserverbyteswriter{IsGeography=false};
var geometryBytes=geometryWriter.Write(区域);
var zoneParameter=新的SqlParameter
{
ParameterName=“@zone”,
值=几何字节,
SqlDbType=SqlDbType.Udt,
UdtTypeName=“几何体”
};
返回_context.Query()
.FromSql(“mySP{0}”,区域参数)
.ToList();
您应该转换几何图形
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();
var geometryWriter=newsqlserverbyteswriter{IsGeography=false};
var geometryBytes=geometryWriter.Write(区域);
var zoneParameter=新的SqlParameter
{
ParameterName=“@zone”,
值=几何字节,
SqlDbType=SqlDbType.Udt,
UdtTypeName=“几何体”
};
返回_context.Query()
.FromSql(“mySP{0}”,区域参数)
.ToList();