Sql server Dapper:无法读取/映射本地SQL Server中的几何体类型字段

Sql server Dapper:无法读取/映射本地SQL Server中的几何体类型字段,sql-server,asp.net-core,dapper,Sql Server,Asp.net Core,Dapper,我正在运行ASP.NET Core 2应用程序 我有一个SQL Server的本地实例,其中有一个表,其列类型为Geometry 当我阅读此表时,会出现以下错误: 此平台不支持Udt类型。 分析第4列(MyLocation)时出错 然而,这个问题似乎只发生在我的API项目中,该项目调用了一个定制的Nuget包来处理CRUD操作 如果我在执行CRUD的项目中测试相同的代码,它将读取并映射我的对象 这不是API中的连接问题,因为我可以成功地读取/写入其中没有几何体字段的其他表 我可能会错过什么 代码

我正在运行ASP.NET Core 2应用程序

我有一个SQL Server的本地实例,其中有一个表,其列类型为
Geometry

当我阅读此表时,会出现以下错误:

此平台不支持Udt类型。
分析第4列(MyLocation)时出错

然而,这个问题似乎只发生在我的API项目中,该项目调用了一个定制的Nuget包来处理CRUD操作

如果我在执行CRUD的项目中测试相同的代码,它将读取并映射我的对象

这不是API中的连接问题,因为我可以成功地读取/写入其中没有几何体字段的其他表

我可能会错过什么

代码:

MyController:

public async Task<IActionResult> Get(Guid Id)
{
   var rec = await myRepo.Get<MyData>(id);
   // then do stuff
}
myRepo:

public async Task<TEntity> Get<TEntity>(object id)
where TEntity : class
{
   _conn.Open();
   return await _conn.GetAsync<TEntity>(id);
}
公共异步任务获取(对象id)
地点:班级
{
_conn.Open();
返回等待连接GetAsync(id);
}

如果这是.NET核心,那么我怀疑您在使用sqlgeography等时可能会遇到重大问题;UDT基本上还没有在.NET Core中实现:

此外,要加载的基础类型使用本机代码;geo/etc类型在.NET Core中不可用

如果我错了,我非常乐意尝试进行任何我们需要的更改来帮助实现这一点,但在撰写本文时:我认为这不会通过任何API实现(这不是特定于Dapper的)

您可能想考虑使用ASP.NET核心在.NETFramework上吗?


如果这些数据确实是从.NET Core中的ADO.NET加载的,那么我很乐意修复我丢失的任何数据。

asp.NET-Core不明确-它是否在.NET Core上运行?还是.net框架?(asp.net core可以在两者上运行)它在.net core 2.0Hmm上运行;显然有
Microsoft.Spatial
()-但我不清楚如何将其映射到UDT问题。。。从历史上看,UDT一直是这个故事的必要组成部分(至少在向服务器发送数据时),因此我们无法轻松地切换到标准框架。但是,我们之前已经通过使用查询方法、注册SqlMapper.AddTypeHandler并添加代码来映射几何体字段来解决了这个问题。然而,我们自重构后,现在使用Dapper.Contrib.Extension方法,因此我们认为在中发生的自定义映射不再被调用。
public async Task<TEntity> Get<TEntity>(object id)
where TEntity : class
{
   _conn.Open();
   return await _conn.GetAsync<TEntity>(id);
}