Dapper空间地理类型

本文关键字:类型 空间 Dapper | 更新日期: 2023-09-27 18:26:42

我正在编写一些空间示例,并决定尝试Dapper,尽管EF有空间支持,我很喜欢再次控制我的SQL(感谢Sam和Marc)。

然而,我需要能够拥有支持DbGeography类的POCO。例如:

public class BuriedTreasure {
   public int PirateId { get; set; }
   public DbGeography MarksTheSpot { get; set; }
}

我的谷歌foo一直让我失望,我能找到的最接近的匹配就是这个问题,尽管它只适合添加空间支持作为参数(所以它有50%)。

现在,就我所见,我仅限于以下选项,对我来说,这两个选项都不是可行的解决方案。

  1. 自定义适配器代码以了解SQL Server特定的类型
  2. 指定LONG、LAT&在我的POCO中使用ELEVATION小数,并在我的存储过程中创建SPATIAL类型,并使用另一个过程来检索值(或者使用持久化的计算列,但这几乎相同)

替代方案?

Dapper空间地理类型

对于任何感兴趣的人,我基本上选择了上面发布的问题中的选项2。我把我的空间数据映射到小数。存储过程进行了一些额外的检查,因此很容易在其中构造点,即以下片段:

Yarrrr = geography::Point(@Latitude, @Longitude, 4326)

本质上,DbGeography类是不可变的,这表明。。。RTFM:)

根本不需要更改适配器!